diff options
author | Robert McQueen <robert.mcqueen@collabora.co.uk> | 2006-12-29 20:57:53 +0000 |
---|---|---|
committer | Robert McQueen <robert.mcqueen@collabora.co.uk> | 2006-12-29 20:57:53 +0000 |
commit | 366d6262e88b39212b7ffd8c0320b86bce69bc1c (patch) | |
tree | cb2d69e24b8dda1173ac991d9b95ffe2cbfecb32 | |
parent | dbe331c90352fdb2afd3fd621233544c24b03357 (diff) | |
download | telepathy-farstream-366d6262e88b39212b7ffd8c0320b86bce69bc1c.tar.gz |
Link the sink elements (ffmpegcolorspace ! videoscale ! whatever) into a bin so that they get set PLAYING together.
20061229205753-418b8-467caa3524e62645bb27f792740e2fa85dceb30d.gz
-rw-r--r-- | src/tp-stream-engine.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/tp-stream-engine.c b/src/tp-stream-engine.c index 4884d73..ecbcbee 100644 --- a/src/tp-stream-engine.c +++ b/src/tp-stream-engine.c @@ -276,7 +276,8 @@ tp_stream_engine_make_video_sink (TpStreamEngine *obj) const gchar *videosink_name; GstElement *sink = NULL; #ifndef MAEMO_OSSO_SUPPORT - GstElement *tmp; + GstElement *bin, *tmp; + GstPad *pad; #endif g_assert (priv->pipeline != NULL); @@ -313,8 +314,6 @@ tp_stream_engine_make_video_sink (TpStreamEngine *obj) g_debug ("setting sync to FALSE"); g_object_set (G_OBJECT (sink), "sync", FALSE, NULL); } - - gst_bin_add (GST_BIN (priv->pipeline), sink); } else { @@ -323,11 +322,14 @@ tp_stream_engine_make_video_sink (TpStreamEngine *obj) } #ifndef MAEMO_OSSO_SUPPORT + bin = gst_bin_new (NULL); + gst_bin_add (GST_BIN (bin), sink); + tmp = gst_element_factory_make ("ffmpegcolorspace", NULL); if (tmp != NULL); { g_debug ("linking ffmpegcolorspace"); - gst_bin_add (GST_BIN (priv->pipeline), tmp); + gst_bin_add (GST_BIN (bin), tmp); gst_element_link (tmp, sink); sink = tmp; } @@ -336,12 +338,20 @@ tp_stream_engine_make_video_sink (TpStreamEngine *obj) if (tmp != NULL) { g_debug ("linking videoscale"); - gst_bin_add (GST_BIN (priv->pipeline), tmp); + gst_bin_add (GST_BIN (bin), tmp); gst_element_link (tmp, sink); sink = tmp; } + + pad = gst_bin_find_unconnected_pad (GST_BIN (bin), GST_PAD_SINK); + gst_element_add_pad (bin, gst_ghost_pad_new ("sink", pad)); + gst_object_unref (GST_OBJECT (pad)); + + sink = bin; #endif + gst_bin_add (GST_BIN (priv->pipeline), sink); + return sink; } |