make video pipeline more configurable

This commit is contained in:
fduncanh
2022-02-19 13:37:38 -05:00
parent 62a2528c03
commit 348c7b98f6
3 changed files with 13 additions and 10 deletions

View File

@@ -45,7 +45,7 @@ typedef enum videoflip_e {
typedef struct video_renderer_s video_renderer_t;
void video_renderer_init (logger_t *logger, const char *server_name, videoflip_t videoflip[2], const char *decoder, const char *videosink);
void video_renderer_init (logger_t *logger, const char *server_name, videoflip_t videoflip[2], const char *decoder, const char *converter, const char *videosink);
void video_renderer_start ();
void video_renderer_stop ();
void video_renderer_render_buffer (raop_ntp_t *ntp, unsigned char* data, int data_len, uint64_t pts, int type);

View File

@@ -105,7 +105,7 @@ void video_renderer_size(float *f_width_source, float *f_height_source, float *f
logger_log(logger, LOGGER_DEBUG, "begin video stream wxh = %dx%d; source %dx%d", width, height, width_source, height_source);
}
void video_renderer_init(logger_t *render_logger, const char *server_name, videoflip_t videoflip[2], const char *decoder, const char *videosink) {
void video_renderer_init(logger_t *render_logger, const char *server_name, videoflip_t videoflip[2], const char *decoder, const char *converter, const char *videosink) {
GError *error = NULL;
logger = render_logger;
@@ -120,14 +120,14 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide
assert(renderer);
gst_init(NULL,NULL);
GString *launch = g_string_new("appsrc name=video_source stream-type=0 format=GST_FORMAT_TIME is-live=true ! queue ! ");
g_string_append(launch, decoder);
g_string_append(launch, " ! videoconvert ! ");
g_string_append(launch, converter);
append_videoflip(launch, &videoflip[0], &videoflip[1]);
g_string_append(launch, videosink);
g_string_append(launch, " name=video_sink sync=false");
renderer->pipeline = gst_parse_launch(launch->str, &error);
logger_log(logger, LOGGER_DEBUG, "GStreamer video pipeline will be:\n\"%s\"", launch->str);
renderer->pipeline = gst_parse_launch(launch->str, &error);
g_assert (renderer->pipeline);
g_string_free(launch, TRUE);