[opencv] 06/19: repaired GStreamer 0.10 version

Mattia Rizzolo mattia at debian.org
Tue Oct 4 17:51:09 UTC 2016


This is an automated email from the git hooks/post-receive script.

mattia pushed a commit to annotated tag 2.4.12.3
in repository opencv.

commit 9a3e53e7386b7a94976d216dae41ddb48600db3d
Author: Ilya Lavrenov <ilya.lavrenov at itseez.com>
Date:   Sun Aug 16 21:01:22 2015 +0300

    repaired GStreamer 0.10 version
    
    (cherry picked from commit c19ed39a785d7ac9e39c117cfacc3827024619f7)
---
 cmake/OpenCVFindLibsVideo.cmake       |  6 +++---
 modules/highgui/src/cap_gstreamer.cpp | 30 +++++++++++++++++-------------
 2 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/cmake/OpenCVFindLibsVideo.cmake b/cmake/OpenCVFindLibsVideo.cmake
index 1654df7..514aa5c 100644
--- a/cmake/OpenCVFindLibsVideo.cmake
+++ b/cmake/OpenCVFindLibsVideo.cmake
@@ -12,8 +12,8 @@ endif(WITH_VFW)
 
 # --- GStreamer ---
 ocv_clear_vars(HAVE_GSTREAMER)
-# try to find gstreamer 1.x first
-if(WITH_GSTREAMER)
+# try to find gstreamer 1.x first if 0.10 was not requested
+if(WITH_GSTREAMER AND NOT WITH_GSTREAMER_0_10)
   CHECK_MODULE(gstreamer-base-1.0 HAVE_GSTREAMER_BASE)
   CHECK_MODULE(gstreamer-video-1.0 HAVE_GSTREAMER_VIDEO)
   CHECK_MODULE(gstreamer-app-1.0 HAVE_GSTREAMER_APP)
@@ -29,7 +29,7 @@ if(WITH_GSTREAMER)
       set(GSTREAMER_PBUTILS_VERSION ${ALIASOF_gstreamer-pbutils-1.0_VERSION})
   endif()
 
-endif(WITH_GSTREAMER)
+endif()
 
 # gstreamer support was requested but could not find gstreamer 1.x,
 # so fallback/try to find gstreamer 0.10
diff --git a/modules/highgui/src/cap_gstreamer.cpp b/modules/highgui/src/cap_gstreamer.cpp
index fe4eaf2..957587c 100644
--- a/modules/highgui/src/cap_gstreamer.cpp
+++ b/modules/highgui/src/cap_gstreamer.cpp
@@ -75,10 +75,13 @@
 
 #if GST_VERSION_MAJOR == 0
 #define COLOR_ELEM "ffmpegcolorspace"
+#define COLOR_ELEM_NAME "ffmpegcsp"
 #elif FULL_GST_VERSION < VERSION_NUM(1,5,0)
 #define COLOR_ELEM "videoconvert"
+#define COLOR_ELEM_NAME COLOR_ELEM
 #else
 #define COLOR_ELEM "autovideoconvert"
+#define COLOR_ELEM_NAME COLOR_ELEM
 #endif
 
 void toFraction(double decimal, double &numerator, double &denominator);
@@ -677,28 +680,27 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
 
     if (manualpipeline)
     {
-        GstIterator *it = NULL;
-#if GST_VERSION_MAJOR == 0
-        it = gst_bin_iterate_sinks(GST_BIN(uridecodebin));
-        if (gst_iterator_next(it, (gpointer *)&sink) != GST_ITERATOR_OK)
-        {
-            CV_ERROR(CV_StsError, "GStreamer: cannot find appsink in manual pipeline\n");
-            return false;
-        }
-#else
-        it = gst_bin_iterate_elements(GST_BIN(uridecodebin));
+        GstIterator *it = gst_bin_iterate_elements(GST_BIN(uridecodebin));
 
-        gboolean done = false;
         GstElement *element = NULL;
+        gboolean done = false;
         gchar* name = NULL;
+#if GST_VERSION_MAJOR > 0
         GValue value = G_VALUE_INIT;
+#endif
 
         while (!done)
         {
+#if GST_VERSION_MAJOR > 0
             switch (gst_iterator_next (it, &value))
             {
             case GST_ITERATOR_OK:
                 element = GST_ELEMENT (g_value_get_object (&value));
+#else
+            switch (gst_iterator_next (it, (gpointer *)&element))
+            {
+            case GST_ITERATOR_OK:
+#endif
                 name = gst_element_get_name(element);
                 if (name)
                 {
@@ -707,14 +709,16 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
                         sink = GST_ELEMENT ( gst_object_ref (element) );
                         done = sink && color;
                     }
-                    else if (strstr(name, COLOR_ELEM) != NULL)
+                    else if (strstr(name, COLOR_ELEM_NAME) != NULL)
                     {
                         color = GST_ELEMENT ( gst_object_ref (element) );
                         done = sink && color;
                     }
                     g_free(name);
                 }
+#if GST_VERSION_MAJOR > 0
                 g_value_unset (&value);
+#endif
 
                 break;
             case GST_ITERATOR_RESYNC:
@@ -733,7 +737,7 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
             CV_ERROR(CV_StsError, "GStreamer: cannot find appsink in manual pipeline\n");
             return false;
         }
-#endif
+
         pipeline = uridecodebin;
     }
     else

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/opencv.git



More information about the debian-science-commits mailing list