slomo pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=85b17ff7c1fd684a82bf563dc44e60a3b10a891a

commit 85b17ff7c1fd684a82bf563dc44e60a3b10a891a
Author: Sebastian Dröge <sebast...@centricular.com>
Date:   Sun Jan 12 19:16:58 2014 +0100

    emotion gstreamer1: Simplify pipeline creation
    
    Also remove the webcam support, this could've never worked and
    needs to be handled differently.
---
 src/modules/emotion/gstreamer1/emotion_gstreamer.c | 76 +++-------------------
 1 file changed, 9 insertions(+), 67 deletions(-)

diff --git a/src/modules/emotion/gstreamer1/emotion_gstreamer.c 
b/src/modules/emotion/gstreamer1/emotion_gstreamer.c
index f055a87..9ae04cd 100644
--- a/src/modules/emotion/gstreamer1/emotion_gstreamer.c
+++ b/src/modules/emotion/gstreamer1/emotion_gstreamer.c
@@ -1638,52 +1638,18 @@ _create_pipeline (Emotion_Gstreamer *ev,
                         const char *uri)
 {
    GstElement *playbin;
-   GstElement *bin = NULL;
-   GstElement *vsink = NULL;
-   GstElement *queue = NULL;
-   GstPad *pad;
+   GstElement *vsink;
    GstBus *bus;
    int flags;
-   const char *launch;
 
    if (!uri)
      return NULL;
 
-   launch = emotion_webcam_custom_get(uri);
-   if (launch)
-     {
-        GError *error = NULL;
-
-        /* FIXME: This code path is broken in many places and won't
-         * work as is */
-        playbin = gst_parse_bin_from_description(launch, 1, &error);
-        if (!playbin)
-          {
-             ERR("Unable to setup command : '%s' got error '%s'.", launch, 
error->message);
-             g_error_free(error);
-             return NULL;
-          }
-        if (error)
-          {
-             WRN("got recoverable error '%s' for command : '%s'.", 
error->message, launch);
-             g_error_free(error);
-          }
-     }
-   else
-     {
-        playbin = gst_element_factory_make("playbin", "playbin");
-        if (!playbin)
-          {
-             ERR("Unable to create 'playbin' GstElement.");
-             return NULL;
-          }
-     }
-
-   bin = gst_bin_new(NULL);
-   if (!bin)
+   playbin = gst_element_factory_make("playbin", "playbin");
+   if (!playbin)
      {
-       ERR("Unable to create GstBin !");
-       goto unref_pipeline;
+        ERR("Unable to create 'playbin' GstElement.");
+        return NULL;
      }
 
    vsink = gst_element_factory_make("emotion-sink", "sink");
@@ -1695,33 +1661,10 @@ _create_pipeline (Emotion_Gstreamer *ev,
 
    g_object_set(G_OBJECT(vsink), "emotion-object", o, NULL);
 
-   /* We need queue to force each video sink to be in its own thread */
-   queue = gst_element_factory_make("queue", "equeue");
-   if (!queue)
-     {
-        ERR("Unable to create 'queue' GstElement.");
-        goto unref_pipeline;
-     }
-
-   gst_bin_add_many(GST_BIN(bin), queue, vsink, NULL);
-   gst_element_link_many(queue, vsink, NULL);
-
-   /* link both sink to GstTee */
-   pad = gst_element_get_static_pad(queue, "sink");
-   gst_element_add_pad(bin, gst_ghost_pad_new("sink", pad));
-   gst_object_unref(pad);
-
-   if (launch)
-     {
-        g_object_set(G_OBJECT(playbin), "sink", bin, NULL);
-     }
-   else
-     {
-        g_object_get(G_OBJECT(playbin), "flags", &flags, NULL);
-        g_object_set(G_OBJECT(playbin), "flags", flags | 
GST_PLAY_FLAG_NATIVE_VIDEO | GST_PLAY_FLAG_DOWNLOAD | 
GST_PLAY_FLAG_NATIVE_AUDIO, NULL);
-        g_object_set(G_OBJECT(playbin), "video-sink", bin, NULL);
-        g_object_set(G_OBJECT(playbin), "uri", uri, NULL);
-     }
+   g_object_get(G_OBJECT(playbin), "flags", &flags, NULL);
+   g_object_set(G_OBJECT(playbin), "flags", flags | GST_PLAY_FLAG_NATIVE_VIDEO 
| GST_PLAY_FLAG_DOWNLOAD | GST_PLAY_FLAG_NATIVE_AUDIO, NULL);
+   g_object_set(G_OBJECT(playbin), "video-sink", vsink, NULL);
+   g_object_set(G_OBJECT(playbin), "uri", uri, NULL);
 
    bus = gst_element_get_bus(playbin);
    gst_bus_set_sync_handler(bus, _bus_sync_handler, ev, NULL);
@@ -1748,7 +1691,6 @@ _create_pipeline (Emotion_Gstreamer *ev,
 
  unref_pipeline:
    gst_object_unref(vsink);
-   gst_object_unref(bin);
    gst_object_unref(playbin);
    return NULL;
 }

-- 


Reply via email to