* 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
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");
}
sel->pending_srcpad = next_pad;
} else {
- GST_WARNING ("setting active pad failed");
+ GST_INFO ("pad already active");
+ gst_object_unref (next_pad);
}
break;
}
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 */