diff --git a/renderers/audio_renderer.h b/renderers/audio_renderer.h index b879a16..72e3dec 100644 --- a/renderers/audio_renderer.h +++ b/renderers/audio_renderer.h @@ -29,6 +29,7 @@ extern "C" { #include #include "../lib/raop_ntp.h" +void gstreamer_init(); void audio_renderer_init(logger_t *logger, const char* audiosink); void audio_renderer_start(unsigned char* compression_type); void audio_renderer_stop(); diff --git a/renderers/audio_renderer_gstreamer.c b/renderers/audio_renderer_gstreamer.c index 9e8bb56..1cad0b8 100644 --- a/renderers/audio_renderer_gstreamer.c +++ b/renderers/audio_renderer_gstreamer.c @@ -51,7 +51,7 @@ static gboolean check_plugins (void) int i; gboolean ret; GstRegistry *registry; - const gchar *needed[] = { "app", "libav", "playback", "autodetect", NULL}; + const gchar *needed[] = { "app", "libav", "playback", "autodetect", "videoparsersbad", NULL}; registry = gst_registry_get (); ret = TRUE; @@ -69,6 +69,11 @@ static gboolean check_plugins (void) return ret; } +void gstreamer_init(){ + gst_init(NULL,NULL); + assert(check_plugins ()); +} + #define NFORMATS 2 /* set to 4 to enable AAC_LD and PCM: allowed, but never seen in real-world use */ static audio_renderer_t *renderer_type[NFORMATS]; static audio_renderer_t *renderer = NULL; @@ -79,8 +84,6 @@ void audio_renderer_init(logger_t *render_logger, const char* audiosink) { GError *error = NULL; GstCaps *caps = NULL; logger = render_logger; - gst_init(NULL,NULL); - assert(check_plugins ()); for (int i = 0; i < NFORMATS ; i++) { renderer_type[i] = (audio_renderer_t *) calloc(1,sizeof(audio_renderer_t)); diff --git a/renderers/video_renderer_gstreamer.c b/renderers/video_renderer_gstreamer.c index 9ec8209..2d52d95 100644 --- a/renderers/video_renderer_gstreamer.c +++ b/renderers/video_renderer_gstreamer.c @@ -132,7 +132,6 @@ void video_renderer_init(logger_t *render_logger, const char *server_name, vide renderer = calloc(1, sizeof(video_renderer_t)); assert(renderer); - gst_init(NULL,NULL); GString *launch = g_string_new("appsrc name=video_source ! "); g_string_append(launch, "queue ! "); g_string_append(launch, parser); diff --git a/uxplay.cpp b/uxplay.cpp index 480dd7c..ed70262 100644 --- a/uxplay.cpp +++ b/uxplay.cpp @@ -688,6 +688,8 @@ int main (int argc, char *argv[]) { logger_set_callback(render_logger, log_callback, NULL); logger_set_level(render_logger, debug_log ? LOGGER_DEBUG : LOGGER_INFO); + gstreamer_init(); + if (use_audio) { audio_renderer_init(render_logger, audiosink.c_str()); } else {