summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--gst/multifile/gstmultifilesink.c1
-rw-r--r--gst/selector/gstoutputselector.c17
-rwxr-xr-xtests/icles/output-selector-test.c4
4 files changed, 22 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 431b1193..21cadfd8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2008-02-07 Stefan Kost <ensonic@users.sf.net>
+ * 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 <ensonic@users.sf.net>
+
* gst/spectrum/gstspectrum.c:
Improve the docs.
diff --git a/gst/multifile/gstmultifilesink.c b/gst/multifile/gstmultifilesink.c
index ad615f78..dd7e1f4c 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 1d1dc05a..a60df6a9 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 304295cd..b158b68e 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 */