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.
This commit is contained in:
Stefan Kost 2008-02-07 13:48:20 +00:00
parent fd149d267f
commit 26abf37c03
4 changed files with 22 additions and 11 deletions

View file

@ -1,3 +1,14 @@
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> 2008-02-07 Stefan Kost <ensonic@users.sf.net>
* gst/spectrum/gstspectrum.c: * gst/spectrum/gstspectrum.c:

View file

@ -151,6 +151,7 @@ gst_multi_file_sink_set_location (GstMultiFileSink * sink,
{ {
g_free (sink->filename); g_free (sink->filename);
if (location != NULL) { if (location != NULL) {
/* FIXME: validate location to have just one %d */
sink->filename = g_strdup (location); sink->filename = g_strdup (location);
} else { } else {
sink->filename = NULL; sink->filename = NULL;

View file

@ -25,13 +25,6 @@
* Direct input stream to one out of N output pads. * 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 #ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif #endif
@ -212,7 +205,12 @@ gst_output_selector_set_property (GObject * object, guint prop_id,
GstPad *next_pad = GstPad *next_pad =
gst_element_get_static_pad (GST_ELEMENT (sel), gst_element_get_static_pad (GST_ELEMENT (sel),
g_value_get_string (value)); 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 */ /* switch to new srcpad in next chain run */
if (sel->pending_srcpad != NULL) { if (sel->pending_srcpad != NULL) {
GST_INFO ("replacing pending switch"); GST_INFO ("replacing pending switch");
@ -220,7 +218,8 @@ gst_output_selector_set_property (GObject * object, guint prop_id,
} }
sel->pending_srcpad = next_pad; sel->pending_srcpad = next_pad;
} else { } else {
GST_WARNING ("setting active pad failed"); GST_INFO ("pad already active");
gst_object_unref (next_pad);
} }
break; break;
} }

View file

@ -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), "is-live", TRUE, NULL);
g_object_set (G_OBJECT (src), "do-timestamp", 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 (src), "num-buffers", 500, NULL);
g_object_set (G_OBJECT (sink1), "sync", FALSE, NULL); g_object_set (G_OBJECT (sink1), "sync", FALSE, "async", FALSE, NULL);
g_object_set (G_OBJECT (sink2), "sync", FALSE, NULL); g_object_set (G_OBJECT (sink2), "sync", FALSE, "async", FALSE, NULL);
g_object_set (G_OBJECT (osel), "resend-latest", TRUE, NULL); g_object_set (G_OBJECT (osel), "resend-latest", TRUE, NULL);
/* link src ! timeoverlay ! osel */ /* link src ! timeoverlay ! osel */