Enlightenment CVS committal

Author  : doursse
Project : e17
Module  : libs/emotion

Dir     : e17/libs/emotion/src/modules


Modified Files:
        Makefile.am emotion_gstreamer.c 
Added Files:
        emotion_gstreamer_pipeline.h emotion_gstreamer_pipeline.c 


Log Message:
put the build of the pipelines apart

===================================================================
RCS file: /cvs/e/e17/libs/emotion/src/modules/Makefile.am,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- Makefile.am 1 Feb 2006 06:21:52 -0000       1.8
+++ Makefile.am 17 Jul 2006 17:11:04 -0000      1.9
@@ -35,7 +35,9 @@
 if BUILD_GSTREAMER_MODULE
 emotion_decoder_gstreamer_la_SOURCES = \
 emotion_gstreamer.c \
-emotion_gstreamer.h
+emotion_gstreamer.h \
+emotion_gstreamer_pipeline.c \
+emotion_gstreamer_pipeline.h
 emotion_decoder_gstreamer_la_LIBADD  = @EVAS_LIBS@ @ECORE_LIBS@ @GST_LIBS@
 emotion_decoder_gstreamer_la_LDFLAGS = -module -avoid-version \
                                       -L$(top_builddir)/src/lib 
-L$(top_builddir)/src/lib/.libs
===================================================================
RCS file: /cvs/e/e17/libs/emotion/src/modules/emotion_gstreamer.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- emotion_gstreamer.c 25 Jun 2006 16:52:51 -0000      1.17
+++ emotion_gstreamer.c 17 Jul 2006 17:11:04 -0000      1.18
@@ -4,69 +4,14 @@
 #include "Emotion.h"
 #include "emotion_private.h"
 #include "emotion_gstreamer.h"
+#include "emotion_gstreamer_pipeline.h"
 
 
-static gboolean
-_emotion_pipeline_pause (GstElement *pipeline)
-{
-   GstStateChangeReturn res;
-
-   res = gst_element_set_state ((pipeline), GST_STATE_PAUSED);
-   if (res == GST_STATE_CHANGE_FAILURE) {
-     g_print ("Emotion-Gstreamer ERROR: could not pause\n");
-     gst_object_unref (GST_OBJECT ((pipeline)));
-     return 0;
-   }
-
-   res = gst_element_get_state ((pipeline), NULL, NULL, GST_CLOCK_TIME_NONE);
-   if (res != GST_STATE_CHANGE_SUCCESS) {
-     g_print ("Emotion-Gstreamer ERROR: could not complete pause\n");
-     gst_object_unref (GST_OBJECT ((pipeline)));
-     return 0;
-   }
-
-   return 1;
-}
-
-
-
-/* Callbacks to display the frame content */
-
-static void cb_handoff (GstElement *fakesrc,
-                       GstBuffer  *buffer,
-                       GstPad     *pad,
-                       gpointer    user_data);
-static void new_decoded_pad_cb (GstElement *decodebin,
-                                GstPad     *new_pad,
-                                gboolean    last,
-                                gpointer    user_data);
-
 /* Callbacks to get the eos */
 static int _eos_timer_fct (void *data);
 
-GstElement *
-make_queue ()
-{
-  GstElement *queue = gst_element_factory_make ("queue", NULL);
-  g_object_set (queue,
-      "max-size-time", (guint64) 3 * GST_SECOND,
-      "max-size-bytes", (guint32) 0,
-      "max-size-buffers", (guint32) 0, NULL);
-
-  return queue;
-}
-
 static int   _em_fd_ev_active(void *data, Ecore_Fd_Handler *fdh);
 
-static Emotion_Video_Sink * _emotion_video_sink_new (Emotion_Gstreamer_Video 
*ev);
-static Emotion_Audio_Sink * _emotion_audio_sink_new (Emotion_Gstreamer_Video 
*ev);
-static GstElement         * _em_audio_sink_create   (Emotion_Gstreamer_Video 
*ev, int index);
-static Emotion_Video_Sink * _visualization_sink_create ();
-
-static int _cdda_pipeline_build (void *video, const char * device, unsigned 
int track);
-static int _file_pipeline_build (void *video, const char *file);
-
-static int _cdda_track_count_get(void *video);
 
 /* Interface */
 
@@ -420,7 +365,7 @@
          sscanf (file,"cdda://%d", &track);
       }
       printf ("build cdda pipeline\n");
-      if (!(_cdda_pipeline_build (ev, device, track))) {
+      if (!(emotion_pipeline_cdda_build (ev, device, track))) {
         printf ("error building CA Audio pipeline\n");
         return 0;
       }
@@ -434,7 +379,7 @@
         : file;
 
       printf ("build file pipeline \n");
-      if (!(_file_pipeline_build (ev, filename))) {
+      if (!(emotion_pipeline_file_build (ev, filename))) {
         printf ("error building File pipeline\n");
         return 0;
       }
@@ -486,7 +431,7 @@
    if (!emotion_object_play_get(ev->obj))
      {
        printf("  ... unpause\n");
-        _emotion_pipeline_pause (ev->pipeline);
+        emotion_pipeline_pause (ev->pipeline);
      }
 
    printf("EX stop\n");
@@ -1068,7 +1013,6 @@
 em_audio_channel_volume_get(void *video)
 {
    Emotion_Gstreamer_Video *ev;
-   double                   vol;
 
    ev = (Emotion_Gstreamer_Video *)video;
 
@@ -1269,7 +1213,7 @@
          case META_TRACK_COUNT: {
             int track_count;
 
-            track_count = _cdda_track_count_get (video);
+            track_count = emotion_pipeline_cdda_track_count_get (video);
             if (track_count > 0) {
                char buf[64];
 
@@ -1315,99 +1259,6 @@
    em_module.shutdown(video);
 }
 
-/* Send the video frame to the evas object */
-static void
-cb_handoff (GstElement *fakesrc,
-           GstBuffer  *buffer,
-           GstPad     *pad,
-           gpointer    user_data)
-{
-   GstQuery *query;
-   void *buf[2];
-
-   Emotion_Gstreamer_Video *ev = ( Emotion_Gstreamer_Video *) user_data;
-   if (!ev)
-     return;
-
-   if (!ev->video_mute) {
-      if (!ev->obj_data)
-         ev->obj_data = (void*) malloc (GST_BUFFER_SIZE(buffer) * 
sizeof(void));
-
-      memcpy ( ev->obj_data, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer));
-      buf[0] = GST_BUFFER_DATA(buffer);
-      buf[1] = buffer;
-      write(ev->fd_ev_write, buf, sizeof(buf));
-   }
-
-   query = gst_query_new_position (GST_FORMAT_TIME);
-   if (gst_pad_query (gst_pad_get_peer (pad), query)) {
-      gint64 position;
-
-      gst_query_parse_position (query, NULL, &position);
-      ev->position = (double)position / (double)GST_SECOND;
-   }
-   gst_query_unref (query);
-}
-
-static void
-new_decoded_pad_cb (GstElement *decodebin,
-                    GstPad     *new_pad,
-                    gboolean    last,
-                    gpointer    user_data)
-{
-   Emotion_Gstreamer_Video *ev;
-   GstCaps *caps;
-   gchar   *str;
-
-   ev = (Emotion_Gstreamer_Video *)user_data;
-   caps = gst_pad_get_caps (new_pad);
-   str = gst_caps_to_string (caps);
-   /* video stream */
-   if (g_str_has_prefix (str, "video/")) {
-      Emotion_Video_Sink *vsink;
-      GstElement         *queue;
-      GstPad             *videopad;
-
-      vsink = (Emotion_Video_Sink *)malloc (sizeof (Emotion_Video_Sink));
-      if (!vsink) return;
-      if (!ecore_list_append (ev->video_sinks, vsink)) {
-         free(vsink);
-         return;
-      }
-
-      queue = gst_element_factory_make ("queue", NULL);
-      vsink->sink = gst_element_factory_make ("fakesink", "videosink");
-      gst_bin_add_many (GST_BIN (ev->pipeline), queue, vsink->sink, NULL);
-      gst_element_link (queue, vsink->sink);
-      videopad = gst_element_get_pad (queue, "sink");
-      gst_pad_link(new_pad, videopad);
-      gst_object_unref (videopad);
-      if (ecore_list_nodes(ev->video_sinks) == 1) {
-         ev->ratio = (double)vsink->width / (double)vsink->height;
-      }
-      gst_element_set_state (queue, GST_STATE_PAUSED);
-      gst_element_set_state (vsink->sink, GST_STATE_PAUSED);
-   }
-   /* audio stream */
-   else if (g_str_has_prefix (str, "audio/")) {
-      Emotion_Audio_Sink *asink;
-      GstPad             *audiopad;
-
-      asink = (Emotion_Audio_Sink *)malloc (sizeof (Emotion_Audio_Sink));
-      if (!asink) return;
-      if (!ecore_list_append (ev->audio_sinks, asink)) {
-         free(asink);
-         return;
-      }
-
-      asink->sink = _em_audio_sink_create (ev, ecore_list_index 
(ev->audio_sinks));
-      gst_bin_add (GST_BIN (ev->pipeline), asink->sink);
-      audiopad = gst_element_get_pad (asink->sink, "sink");
-      gst_pad_link(new_pad, audiopad);
-      gst_element_set_state (asink->sink, GST_STATE_PAUSED);
-   }
-}
-
 static int
 _em_fd_ev_active(void *data, Ecore_Fd_Handler *fdh)
 {
@@ -1437,531 +1288,6 @@
    return 1;
 }
 
-static Emotion_Video_Sink *
-_emotion_video_sink_new (Emotion_Gstreamer_Video *ev)
-{
-   Emotion_Video_Sink *vsink;
-
-   if (!ev) return NULL;
-
-   vsink = (Emotion_Video_Sink *)malloc (sizeof (Emotion_Video_Sink));
-   if (!vsink) return NULL;
-
-   if (!ecore_list_append (ev->video_sinks, vsink)) {
-     free (vsink);
-     return NULL;
-   }
-   return vsink;
-}
-
-static void
-_emotion_video_sink_free (Emotion_Gstreamer_Video *ev, Emotion_Video_Sink 
*vsink)
-{
-   if (!ev || !vsink) return;
-
-   if (ecore_list_goto (ev->video_sinks, vsink)) {
-      ecore_list_remove (ev->video_sinks);
-      free (vsink);
-   }
-}
-
-static Emotion_Audio_Sink *
-_emotion_audio_sink_new (Emotion_Gstreamer_Video *ev)
-{
-   Emotion_Audio_Sink *asink;
-
-   if (!ev) return NULL;
-
-   asink = (Emotion_Audio_Sink *)malloc (sizeof (Emotion_Audio_Sink));
-   if (!asink) return NULL;
-
-   if (!ecore_list_append (ev->audio_sinks, asink)) {
-     free (asink);
-     return NULL;
-   }
-   return asink;
-}
-
-static void
-_emotion_audio_sink_free (Emotion_Gstreamer_Video *ev, Emotion_Audio_Sink 
*asink)
-{
-   if (!ev || !asink) return;
-
-   if (ecore_list_goto (ev->audio_sinks, asink)) {
-      ecore_list_remove (ev->audio_sinks);
-      free (asink);
-   }
-}
-
-static Emotion_Video_Sink *
-_visualization_sink_create (Emotion_Gstreamer_Video *ev, Emotion_Audio_Sink 
*asink)
-{
-   Emotion_Video_Sink *vsink;
-
-   if (!ev) return NULL;
-
-   vsink = _emotion_video_sink_new (ev);
-   if (!vsink) return NULL;
-
-   vsink->sink = gst_bin_get_by_name (GST_BIN (asink->sink), "vissink1");
-   if (!vsink->sink) {
-      _emotion_video_sink_free (ev, vsink);
-      return NULL;
-   }
-   vsink->width = 320;
-   vsink->height = 200;
-   ev->ratio = (double)vsink->width / (double)vsink->height;
-   vsink->fps_num = 25;
-   vsink->fps_den = 1;
-   vsink->fourcc = GST_MAKE_FOURCC ('A','R','G','B');
-   vsink->length_time = asink->length_time;
-
-   g_object_set (G_OBJECT (vsink->sink), "sync", TRUE, NULL);
-   g_object_set (G_OBJECT (vsink->sink), "signal-handoffs", TRUE, NULL);
-   g_signal_connect (G_OBJECT (vsink->sink),
-                     "handoff",
-                     G_CALLBACK (cb_handoff), ev);
-   return vsink;
-}
-
-static GstElement *
-_em_audio_sink_create (Emotion_Gstreamer_Video *ev, int index)
-{
-   gchar       buf[128];
-   GstElement *bin;
-   GstElement *audiobin;
-   GstElement *visbin = NULL;
-   GstElement *tee;
-   GstPad     *teepad;
-   GstPad     *binpad;
-
-   /* audio sink */
-   bin = gst_bin_new (NULL);
-   if (!bin) return NULL;
-
-   g_snprintf (buf, 128, "tee%d", index);
-   tee = gst_element_factory_make ("tee", buf);
-
-   /* audio part */
-   {
-     GstElement *queue;
-     GstElement *conv;
-     GstElement *resample;
-     GstElement *volume;
-     GstElement *sink;
-     GstPad     *audiopad;
-     double      vol;
-
-     audiobin = gst_bin_new (NULL);
-
-     queue = gst_element_factory_make ("queue", NULL);
-     conv = gst_element_factory_make ("audioconvert", NULL);
-     resample = gst_element_factory_make ("audioresample", NULL);
-     volume = gst_element_factory_make ("volume", "volume");
-     g_object_get (G_OBJECT (volume), "volume", &vol, NULL);
-     ev->volume = vol / 10.0;
-
-     if (index == 1)
-       sink = gst_element_factory_make ("autoaudiosink", NULL);
-     else
-       sink = gst_element_factory_make ("fakesink", NULL);
-
-     gst_bin_add_many (GST_BIN (audiobin),
-                       queue, conv, resample, volume, sink, NULL);
-     gst_element_link_many (queue, conv, resample, volume, sink, NULL);
-
-     audiopad = gst_element_get_pad (queue, "sink");
-     gst_element_add_pad (audiobin, gst_ghost_pad_new ("sink", audiopad));
-     gst_object_unref (audiopad);
-   }
-
-   /* visualisation part */
-   {
-     GstElement *vis = NULL;
-     char       *vis_name;
-
-     switch (ev->vis) {
-     case EMOTION_VIS_GOOM:
-       vis_name = "goom";
-       break;
-     case EMOTION_VIS_LIBVISUAL_BUMPSCOPE:
-       vis_name = "libvisual_bumpscope";
-       break;
-     case EMOTION_VIS_LIBVISUAL_CORONA:
-       vis_name = "libvisual_corona";
-       break;
-     case EMOTION_VIS_LIBVISUAL_DANCING_PARTICLES:
-       vis_name = "libvisual_dancingparticles";
-       break;
-     case EMOTION_VIS_LIBVISUAL_GDKPIXBUF:
-       vis_name = "libvisual_gdkpixbuf";
-       break;
-     case EMOTION_VIS_LIBVISUAL_G_FORCE:
-       vis_name = "libvisual_G-Force";
-       break;
-     case EMOTION_VIS_LIBVISUAL_GOOM:
-       vis_name = "libvisual_goom";
-       break;
-     case EMOTION_VIS_LIBVISUAL_INFINITE:
-       vis_name = "libvisual_infinite";
-       break;
-     case EMOTION_VIS_LIBVISUAL_JAKDAW:
-       vis_name = "libvisual_jakdaw";
-       break;
-     case EMOTION_VIS_LIBVISUAL_JESS:
-       vis_name = "libvisual_jess";
-       break;
-     case EMOTION_VIS_LIBVISUAL_LV_ANALYSER:
-       vis_name = "libvisual_lv_analyzer";
-       break;
-     case EMOTION_VIS_LIBVISUAL_LV_FLOWER:
-       vis_name = "libvisual_lv_flower";
-       break;
-     case EMOTION_VIS_LIBVISUAL_LV_GLTEST:
-       vis_name = "libvisual_lv_gltest";
-       break;
-     case EMOTION_VIS_LIBVISUAL_LV_SCOPE:
-       vis_name = "libvisual_lv_scope";
-       break;
-     case EMOTION_VIS_LIBVISUAL_MADSPIN:
-       vis_name = "libvisual_madspin";
-       break;
-     case EMOTION_VIS_LIBVISUAL_NEBULUS:
-       vis_name = "libvisual_nebulus";
-       break;
-     case EMOTION_VIS_LIBVISUAL_OINKSIE:
-       vis_name = "libvisual_oinksie";
-       break;
-     case EMOTION_VIS_LIBVISUAL_PLASMA:
-       vis_name = "libvisual_plazma";
-       break;
-     default:
-       vis_name = "goom";
-       break;
-     }
-
-     g_snprintf (buf, 128, "vis%d", index);
-     if ((vis = gst_element_factory_make (vis_name, buf))) {
-       GstElement *queue;
-       GstElement *conv;
-       GstElement *cspace;
-       GstElement *sink;
-       GstPad     *vispad;
-       GstCaps    *caps;
-
-       g_snprintf (buf, 128, "visbin%d", index);
-       visbin = gst_bin_new (buf);
-
-       queue = gst_element_factory_make ("queue", NULL);
-       conv = gst_element_factory_make ("audioconvert", NULL);
-       cspace = gst_element_factory_make ("ffmpegcolorspace", NULL);
-       g_snprintf (buf, 128, "vissink%d", index);
-       sink = gst_element_factory_make ("fakesink", buf);
-
-       gst_bin_add_many (GST_BIN (visbin),
-                         queue, conv, vis, cspace, sink, NULL);
-       gst_element_link_many (queue, conv, vis, cspace, NULL);
-       caps = gst_caps_new_simple ("video/x-raw-rgb",
-                                   "bpp", G_TYPE_INT, 32,
-                                   "width", G_TYPE_INT, 320,
-                                   "height", G_TYPE_INT, 200,
-                                   NULL);
-       gst_element_link_filtered (cspace, sink, caps);
-
-       vispad = gst_element_get_pad (queue, "sink");
-       gst_element_add_pad (visbin, gst_ghost_pad_new ("sink", vispad));
-       gst_object_unref (vispad);
-     }
-   }
-
-   gst_bin_add_many (GST_BIN (bin), tee, audiobin, NULL);
-   if (visbin)
-     gst_bin_add (GST_BIN (bin), visbin);
-
-   binpad = gst_element_get_pad (audiobin, "sink");
-   teepad = gst_element_get_request_pad (tee, "src%d");
-   gst_pad_link (teepad, binpad);
-   gst_object_unref (teepad);
-   gst_object_unref (binpad);
-
-   if (visbin) {
-      binpad = gst_element_get_pad (visbin, "sink");
-      teepad = gst_element_get_request_pad (tee, "src%d");
-      gst_pad_link (teepad, binpad);
-      gst_object_unref (teepad);
-      gst_object_unref (binpad);
-   }
-
-   teepad = gst_element_get_pad (tee, "sink");
-   gst_element_add_pad (bin, gst_ghost_pad_new ("sink", teepad));
-   gst_object_unref (teepad);
-
-   return bin;
-}
-
-static int
-_cdda_pipeline_build (void *video, const char * device, unsigned int track)
-{
-   GstElement              *cdiocddasrc;
-   Emotion_Video_Sink      *vsink;
-   Emotion_Audio_Sink      *asink;
-   Emotion_Gstreamer_Video *ev;
-/*    GstFormat                format; */
-/*    gint64                  tracks_count; */
-
-   ev = (Emotion_Gstreamer_Video *)video;
-   if (!ev) return 0;
-
-   cdiocddasrc = gst_element_factory_make ("cdiocddasrc", "src");
-   if (!cdiocddasrc) {
-     g_print ("cdiocddasrc element missing. Install it.\n");
-     return 0;
-   }
-
-   if (device)
-      g_object_set (G_OBJECT (cdiocddasrc), "device", device, NULL);
-
-   g_object_set (G_OBJECT (cdiocddasrc), "track", track, NULL);
-
-   asink = _emotion_audio_sink_new (ev);
-   if (!asink)
-     goto failure_emotion_sink;
-
-   asink->sink = _em_audio_sink_create (ev,  1);
-   if (!asink->sink)
-     goto failure_gstreamer_sink;
-
-   gst_bin_add_many((GST_BIN (ev->pipeline)), cdiocddasrc, asink->sink, NULL);
-
-   if (!gst_element_link (cdiocddasrc, asink->sink))
-     goto failure_link;
-
-   vsink = _visualization_sink_create (ev, asink);
-   if (!vsink) goto failure_link;
-
-   if (!_emotion_pipeline_pause (ev->pipeline))
-     goto failure_gstreamer_pause;
-
-   {
-      GstQuery *query;
-      GstPad   *pad;
-      GstCaps  *caps;
-      GstStructure *structure;
-
-      /* should always be found */
-      pad = gst_element_get_pad (cdiocddasrc, "src");
-
-      caps = gst_pad_get_caps (pad);
-      structure = gst_caps_get_structure (GST_CAPS (caps), 0);
-
-      gst_structure_get_int (structure, "channels", &asink->channels);
-      gst_structure_get_int (structure, "rate", &asink->samplerate);
-
-      gst_caps_unref (caps);
-
-      query = gst_query_new_duration (GST_FORMAT_TIME);
-      if (gst_pad_query (pad, query)) {
-         gint64 time;
-
-         gst_query_parse_duration (query, NULL, &time);
-         asink->length_time = (double)time / (double)GST_SECOND;
-         vsink->length_time = asink->length_time;
-      }
-      gst_query_unref (query);
-      gst_object_unref (GST_OBJECT (pad));
-   }
-
-   return 1;
-
- failure_gstreamer_pause:
-   _emotion_video_sink_free (ev, vsink);
- failure_link:
-   gst_bin_remove (GST_BIN (ev->pipeline), asink->sink);
-   gst_bin_remove (GST_BIN (ev->pipeline), cdiocddasrc);
- failure_gstreamer_sink:
-   _emotion_audio_sink_free (ev, asink);
- failure_emotion_sink:
-   /*  may be NULL because of gst_bin_remove above */
-   if (cdiocddasrc)
-      gst_object_unref (GST_OBJECT (cdiocddasrc));
-
-   return 0;
-}
-
-static int
-_file_pipeline_build (void *video, const char *file)
-{
-   GstElement              *filesrc;
-   GstElement              *decodebin;
-   Emotion_Gstreamer_Video *ev;
-
-   ev = (Emotion_Gstreamer_Video *)video;
-   if (!ev) return 0;
-
-   filesrc = gst_element_factory_make ("filesrc", "src");
-   if (!filesrc)
-      return 0;
-   g_object_set (G_OBJECT (filesrc), "location", file, NULL);
-
-   decodebin = gst_element_factory_make ("decodebin", "decodebin");
-   if (!decodebin)
-     goto failure_decodebin;
-   g_signal_connect (decodebin, "new-decoded-pad",
-                     G_CALLBACK (new_decoded_pad_cb), ev);
-
-   gst_bin_add_many (GST_BIN (ev->pipeline), filesrc, decodebin, NULL);
-   if (!gst_element_link (filesrc, decodebin))
-     goto failure_link;
-
-   if (!_emotion_pipeline_pause (ev->pipeline))
-     goto failure_gstreamer_pause;
-
-   /* We get the informations of streams */
-   ecore_list_goto_first (ev->video_sinks);
-   ecore_list_goto_first (ev->audio_sinks);
-
-   {
-      GstIterator *it;
-      gpointer     data;
-
-      it = gst_element_iterate_src_pads (decodebin);
-      while (gst_iterator_next (it, &data) == GST_ITERATOR_OK) {
-         GstPad  *pad;
-         GstCaps *caps;
-         gchar   *str;
-
-         pad = GST_PAD (data);
-
-         caps = gst_pad_get_caps (pad);
-         str = gst_caps_to_string (caps);
-         /* video stream */
-         if (g_str_has_prefix (str, "video/")) {
-            Emotion_Video_Sink *vsink;
-            GstStructure       *structure;
-            const GValue       *val;
-            GstQuery           *query;
-
-            vsink = (Emotion_Video_Sink *)ecore_list_next (ev->video_sinks);
-            structure = gst_caps_get_structure (GST_CAPS (caps), 0);
-
-            gst_structure_get_int (structure, "width", &vsink->width);
-            gst_structure_get_int (structure, "height", &vsink->height);
-
-            vsink->fps_num = 1;
-            vsink->fps_den = 1;
-            val = gst_structure_get_value (structure, "framerate");
-            if (val) {
-               vsink->fps_num = gst_value_get_fraction_numerator (val);
-               vsink->fps_den = gst_value_get_fraction_denominator (val);
-            }
-            if (g_str_has_prefix(str, "video/x-raw-yuv")) {
-               val = gst_structure_get_value (structure, "format");
-               vsink->fourcc = gst_value_get_fourcc (val);
-            }
-            else if (g_str_has_prefix(str, "video/x-raw-rgb")) {
-              vsink->fourcc = GST_MAKE_FOURCC ('A','R','G','B');
-            }
-            else
-               vsink->fourcc = 0;
-
-            query = gst_query_new_duration (GST_FORMAT_TIME);
-            if (gst_pad_query (pad, query)) {
-               gint64 time;
-
-               gst_query_parse_duration (query, NULL, &time);
-               vsink->length_time = (double)time / (double)GST_SECOND;
-            }
-            gst_query_unref (query);
-         }
-         /* audio stream */
-         else if (g_str_has_prefix (str, "audio/")) {
-            Emotion_Audio_Sink *asink;
-            GstStructure       *structure;
-            GstQuery           *query;
-            gint                index;
-
-            asink = (Emotion_Audio_Sink *)ecore_list_next (ev->audio_sinks);
-
-            structure = gst_caps_get_structure (GST_CAPS (caps), 0);
-            gst_structure_get_int (structure, "channels", &asink->channels);
-            gst_structure_get_int (structure, "rate", &asink->samplerate);
-
-            query = gst_query_new_duration (GST_FORMAT_TIME);
-            if (gst_pad_query (pad, query)) {
-               gint64 time;
-
-               gst_query_parse_duration (query, NULL, &time);
-               asink->length_time = (double)time / (double)GST_SECOND;
-            }
-            gst_query_unref (query);
-
-            index = ecore_list_index (ev->audio_sinks);
-
-            if (ecore_list_nodes (ev->video_sinks) == 0) {
-              if (index == 1) {
-                 Emotion_Video_Sink *vsink;
-
-                 vsink = _visualization_sink_create (ev, asink);
-                 if (!vsink) goto finalize;
-              }
-            }
-            else {
-               gchar               buf[128];
-               GstElement         *visbin;
-
-               g_snprintf (buf, 128, "visbin%d", index);
-               visbin = gst_bin_get_by_name (GST_BIN (ev->pipeline), buf);
-               if (visbin) {
-                  GstPad *srcpad;
-                  GstPad *sinkpad;
-
-                  sinkpad = gst_element_get_pad (visbin, "sink");
-                  srcpad = gst_pad_get_peer (sinkpad);
-                  gst_pad_unlink (srcpad, sinkpad);
-
-                  gst_object_unref (srcpad);
-                  gst_object_unref (sinkpad);
-               }
-            }
-         }
-      finalize:
-          gst_caps_unref (caps);
-          g_free (str);
-          gst_object_unref (pad);
-      }
-      gst_iterator_free (it);
-   }
-
-   /* The first vsink is a valid Emotion_Video_Sink * */
-   /* If no video stream is found, it's a visualisation sink */
-   {
-      Emotion_Video_Sink *vsink;
-
-      vsink = (Emotion_Video_Sink *)ecore_list_goto_first (ev->video_sinks);
-      if (vsink && vsink->sink) {
-         g_object_set (G_OBJECT (vsink->sink), "sync", TRUE, NULL);
-         g_object_set (G_OBJECT (vsink->sink), "signal-handoffs", TRUE, NULL);
-         g_signal_connect (G_OBJECT (vsink->sink),
-                           "handoff",
-                           G_CALLBACK (cb_handoff), ev);
-      }
-   }
-
-   return 1;
-
- failure_gstreamer_pause:
- failure_link:
-   gst_element_set_state (ev->pipeline, GST_STATE_NULL);
-   gst_bin_remove (GST_BIN (ev->pipeline), filesrc);
-   gst_bin_remove (GST_BIN (ev->pipeline), decodebin);
- failure_decodebin:
-   /*  may be NULL because of gst_bin_remove above */
-   if (filesrc)
-     gst_object_unref (GST_OBJECT (filesrc));
-
-   return 0;
-}
-
 int _eos_timer_fct (void *data)
 {
    Emotion_Gstreamer_Video *ev;
@@ -1998,49 +1324,4 @@
      gst_message_unref (msg);
    }
    return 1;
-}
-
-static int
-_cdda_track_count_get(void *video)
-{
-   Emotion_Gstreamer_Video *ev;
-   GstBus                  *bus;
-   guint                    tracks_count = 0;
-   gboolean                 done;
-
-   ev = (Emotion_Gstreamer_Video *)video;
-   if (!ev) return tracks_count;
-
-   done = FALSE;
-   bus = gst_element_get_bus (ev->pipeline);
-   if (!bus) return tracks_count;
-
-   while (!done) {
-      GstMessage *message;
-
-      message = gst_bus_pop (bus);
-      if (message == NULL)
-        /* All messages read, we're done */
-         break;
-
-      switch (GST_MESSAGE_TYPE (message)) {
-      case GST_MESSAGE_TAG: {
-         GstTagList *tags;
-
-         gst_message_parse_tag (message, &tags);
-
-         gst_tag_list_get_uint (tags, GST_TAG_TRACK_COUNT, &tracks_count);
-         if (tracks_count) done = TRUE;
-         break;
-      }
-      case GST_MESSAGE_ERROR:
-      default:
-         break;
-      }
-      gst_message_unref (message);
-   }
-
-   gst_object_unref (GST_OBJECT (bus));
-
-   return tracks_count;
 }




-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to