From 26abf37c0365079b3dffae19c94d6690f2f1584e Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Thu, 7 Feb 2008 13:48:20 +0000 Subject: [PATCH] gst/multifile/gstmultifilesink.c: Add a fixme comment. Original commit message from CVS: * gst/multifile/gstmultifilesink.c: Add a fixme comment. * gst/selector/gstoutputselector.c: Fix same leak as in input-selector. * tests/icles/output-selector-test.c: Improve the test. --- ChangeLog | 11 +++++++++++ gst/multifile/gstmultifilesink.c | 1 + gst/selector/gstoutputselector.c | 17 ++++++++--------- tests/icles/output-selector-test.c | 4 ++-- 4 files changed, 22 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 431b119..21cadfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2008-02-07 Stefan Kost + * gst/multifile/gstmultifilesink.c: + Add a fixme comment. + + * gst/selector/gstoutputselector.c: + Fix same leak as in input-selector. + + * tests/icles/output-selector-test.c: + Improve the test. + +2008-02-07 Stefan Kost + * gst/spectrum/gstspectrum.c: Improve the docs. diff --git a/gst/multifile/gstmultifilesink.c b/gst/multifile/gstmultifilesink.c index ad615f7..dd7e1f4 100644 --- a/gst/multifile/gstmultifilesink.c +++ b/gst/multifile/gstmultifilesink.c @@ -151,6 +151,7 @@ gst_multi_file_sink_set_location (GstMultiFileSink * sink, { g_free (sink->filename); if (location != NULL) { + /* FIXME: validate location to have just one %d */ sink->filename = g_strdup (location); } else { sink->filename = NULL; diff --git a/gst/selector/gstoutputselector.c b/gst/selector/gstoutputselector.c index 1d1dc05..a60df6a 100644 --- a/gst/selector/gstoutputselector.c +++ b/gst/selector/gstoutputselector.c @@ -25,13 +25,6 @@ * Direct input stream to one out of N output pads. */ -/* FIXME: By default basesinks require some prerolled data before changing - to playing state. Also pipeline with output-selector connected to multiple - sink elements won't change to playing until all sink elements have received - the preroll data. Currently this can be worked around using live source element - and and exporting GST_COMPAT="no-live-preroll". -*/ - #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -212,7 +205,12 @@ gst_output_selector_set_property (GObject * object, guint prop_id, GstPad *next_pad = gst_element_get_static_pad (GST_ELEMENT (sel), g_value_get_string (value)); - if (next_pad && (next_pad != sel->active_srcpad)) { + if (!next_pad) { + GST_WARNING ("pad %s not found, activation failed", + g_value_get_string (value)); + break; + } + if (next_pad != sel->active_srcpad) { /* switch to new srcpad in next chain run */ if (sel->pending_srcpad != NULL) { GST_INFO ("replacing pending switch"); @@ -220,7 +218,8 @@ gst_output_selector_set_property (GObject * object, guint prop_id, } sel->pending_srcpad = next_pad; } else { - GST_WARNING ("setting active pad failed"); + GST_INFO ("pad already active"); + gst_object_unref (next_pad); } break; } diff --git a/tests/icles/output-selector-test.c b/tests/icles/output-selector-test.c index 304295c..b158b68 100755 --- a/tests/icles/output-selector-test.c +++ b/tests/icles/output-selector-test.c @@ -93,8 +93,8 @@ main (gint argc, gchar * argv[]) g_object_set (G_OBJECT (src), "is-live", TRUE, NULL); g_object_set (G_OBJECT (src), "do-timestamp", TRUE, NULL); g_object_set (G_OBJECT (src), "num-buffers", 500, NULL); - g_object_set (G_OBJECT (sink1), "sync", FALSE, NULL); - g_object_set (G_OBJECT (sink2), "sync", FALSE, NULL); + g_object_set (G_OBJECT (sink1), "sync", FALSE, "async", FALSE, NULL); + g_object_set (G_OBJECT (sink2), "sync", FALSE, "async", FALSE, NULL); g_object_set (G_OBJECT (osel), "resend-latest", TRUE, NULL); /* link src ! timeoverlay ! osel */ -- 2.7.4