summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert McQueen <robert.mcqueen@collabora.co.uk>2006-12-29 20:57:53 +0000
committerRobert McQueen <robert.mcqueen@collabora.co.uk>2006-12-29 20:57:53 +0000
commit366d6262e88b39212b7ffd8c0320b86bce69bc1c (patch)
treecb2d69e24b8dda1173ac991d9b95ffe2cbfecb32
parentdbe331c90352fdb2afd3fd621233544c24b03357 (diff)
downloadtelepathy-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.c20
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;
}