From 7d260054525912fe0efd07d5277c462d951e7b5c Mon Sep 17 00:00:00 2001 From: fduncanh Date: Mon, 23 Aug 2021 00:44:04 -0400 Subject: [PATCH] missing part of commit improved the port selection option, added ability to choose videosink @fduncanh fduncanh committed yesterday --- renderers/video_renderer.h | 2 +- renderers/video_renderer_gstreamer.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/renderers/video_renderer.h b/renderers/video_renderer.h index af6e865..2e3b27b 100644 --- a/renderers/video_renderer.h +++ b/renderers/video_renderer.h @@ -44,7 +44,7 @@ typedef enum videoflip_e { typedef struct video_renderer_s video_renderer_t; -video_renderer_t *video_renderer_init (logger_t *logger, const char *server_name, videoflip_t videoflip[2]); +video_renderer_t *video_renderer_init (logger_t *logger, const char *server_name, videoflip_t videoflip[2], const char *videosink); void video_renderer_start (video_renderer_t *renderer); void video_renderer_render_buffer (video_renderer_t *renderer, raop_ntp_t *ntp, unsigned char* data, int data_len, uint64_t pts, int type); void video_renderer_flush (video_renderer_t *renderer); diff --git a/renderers/video_renderer_gstreamer.c b/renderers/video_renderer_gstreamer.c index 246bdfc..0af9d9e 100644 --- a/renderers/video_renderer_gstreamer.c +++ b/renderers/video_renderer_gstreamer.c @@ -111,7 +111,7 @@ static void append_videoflip (GString *launch, const videoflip_t *flip, const vi } } -video_renderer_t *video_renderer_init(logger_t *logger, const char *server_name, videoflip_t videoflip[2]) { +video_renderer_t *video_renderer_init(logger_t *logger, const char *server_name, videoflip_t videoflip[2], const char *videosink) { video_renderer_t *renderer; GError *error = NULL; @@ -136,8 +136,13 @@ video_renderer_t *video_renderer_init(logger_t *logger, const char *server_name, GString *launch = g_string_new("-e appsrc name=video_source stream-type=0 format=GST_FORMAT_TIME is-live=true !" "queue ! decodebin ! videoconvert ! "); append_videoflip(launch, &videoflip[0], &videoflip[1]); - /* replace "autovideosink" with "fpsdisplaysink" (from gstreamer-plugins-bad) to display framerate */ - g_string_append(launch, "autovideosink name=video_sink sync=false"); + /* replace "autovideosink" with "fpsdisplaysink" (from gstreamer-plugins-bad) to display framerate */ + if (videosink) { + g_string_append(launch, videosink); + } else { + g_string_append(launch, "autovideosink"); + } + g_string_append(launch, " name=video_sink sync=false"); renderer->pipeline = gst_parse_launch(launch->str, &error); g_assert (renderer->pipeline);