From: Sebastian Dröge Date: Thu, 24 Mar 2011 13:03:31 +0000 (+0100) Subject: playsink: Only add a queue before the audio sink if visualizations are enabled X-Git-Tag: 1.19.3~511^2~6555^2~1062 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=df886c0622257bb8635e5bd0fc7fc3da20bfc3be;p=platform%2Fupstream%2Fgstreamer.git playsink: Only add a queue before the audio sink if visualizations are enabled The queue is not needed otherwise and will add some delay to track switches. --- diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c index 169a541..879f9c4 100644 --- a/gst/playback/gstplaysink.c +++ b/gst/playback/gstplaysink.c @@ -1645,7 +1645,7 @@ notify_mute_cb (GObject * object, GParamSpec * pspec, GstPlaySink * playsink) * +-------------------------------------------------------------+ */ static GstPlayAudioChain * -gen_audio_chain (GstPlaySink * playsink, gboolean raw) +gen_audio_chain (GstPlaySink * playsink, gboolean raw, gboolean queue) { GstPlayAudioChain *chain; GstBin *bin; @@ -1691,19 +1691,24 @@ gen_audio_chain (GstPlaySink * playsink, gboolean raw) /* we have to add a queue when we need to decouple for the video sink in * visualisations */ - GST_DEBUG_OBJECT (playsink, "adding audio queue"); - chain->queue = gst_element_factory_make ("queue", "aqueue"); - if (chain->queue == NULL) { - post_missing_element_message (playsink, "queue"); - GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN, - (_("Missing element '%s' - check your GStreamer installation."), - "queue"), ("audio playback and visualizations might not work")); + if (queue) { + GST_DEBUG_OBJECT (playsink, "adding audio queue"); + chain->queue = gst_element_factory_make ("queue", "aqueue"); + if (chain->queue == NULL) { + post_missing_element_message (playsink, "queue"); + GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN, + (_("Missing element '%s' - check your GStreamer installation."), + "queue"), ("audio playback and visualizations might not work")); + head = chain->sink; + prev = NULL; + } else { + g_object_set (chain->queue, "silent", TRUE, NULL); + gst_bin_add (bin, chain->queue); + prev = head = chain->queue; + } + } else { head = chain->sink; prev = NULL; - } else { - g_object_set (chain->queue, "silent", TRUE, NULL); - gst_bin_add (bin, chain->queue); - prev = head = chain->queue; } /* find ts-offset element */ @@ -2393,7 +2398,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink) if (!playsink->audiochain) { GST_DEBUG_OBJECT (playsink, "creating new audio chain"); - playsink->audiochain = gen_audio_chain (playsink, raw); + playsink->audiochain = gen_audio_chain (playsink, raw, need_vis); } if (!playsink->audio_sinkpad_stream_synchronizer) {