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.
This commit is contained in:
Sebastian Dröge 2011-03-24 14:03:31 +01:00
parent 8f2aea0fe4
commit df886c0622

View File

@ -1645,7 +1645,7 @@ notify_mute_cb (GObject * object, GParamSpec * pspec, GstPlaySink * playsink)
* +-------------------------------------------------------------+ * +-------------------------------------------------------------+
*/ */
static GstPlayAudioChain * static GstPlayAudioChain *
gen_audio_chain (GstPlaySink * playsink, gboolean raw) gen_audio_chain (GstPlaySink * playsink, gboolean raw, gboolean queue)
{ {
GstPlayAudioChain *chain; GstPlayAudioChain *chain;
GstBin *bin; 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 /* we have to add a queue when we need to decouple for the video sink in
* visualisations */ * visualisations */
GST_DEBUG_OBJECT (playsink, "adding audio queue"); if (queue) {
chain->queue = gst_element_factory_make ("queue", "aqueue"); GST_DEBUG_OBJECT (playsink, "adding audio queue");
if (chain->queue == NULL) { chain->queue = gst_element_factory_make ("queue", "aqueue");
post_missing_element_message (playsink, "queue"); if (chain->queue == NULL) {
GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN, post_missing_element_message (playsink, "queue");
(_("Missing element '%s' - check your GStreamer installation."), GST_ELEMENT_WARNING (playsink, CORE, MISSING_PLUGIN,
"queue"), ("audio playback and visualizations might not work")); (_("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; head = chain->sink;
prev = NULL; 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 */ /* find ts-offset element */
@ -2393,7 +2398,7 @@ gst_play_sink_reconfigure (GstPlaySink * playsink)
if (!playsink->audiochain) { if (!playsink->audiochain) {
GST_DEBUG_OBJECT (playsink, "creating new audio chain"); 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) { if (!playsink->audio_sinkpad_stream_synchronizer) {