[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