From aa576342138327a36cbe59bbdfb90bd1ab509b27 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Tue, 23 Sep 2014 14:00:53 +0400 Subject: [PATCH] Fixed compatibility with GStreamer 1.x. --- modules/videoio/src/cap_gstreamer.cpp | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/modules/videoio/src/cap_gstreamer.cpp b/modules/videoio/src/cap_gstreamer.cpp index 4369feb..5c19bad 100644 --- a/modules/videoio/src/cap_gstreamer.cpp +++ b/modules/videoio/src/cap_gstreamer.cpp @@ -1220,12 +1220,12 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, GstEncodingVideoProfile* videoprofile = NULL; #endif - bool done = false; - GstElement* item = NULL; GstIterator* it = NULL; - char* name = NULL; - GstElement* splitter; - GstElement* combiner; + gboolean done = FALSE; + GstElement *element = NULL; + gchar* name = NULL; + GstElement* splitter = NULL; + GstElement* combiner = NULL; // we first try to construct a pipeline from the given string. // if that fails, we assume it is an ordinary filename @@ -1245,10 +1245,6 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, } #else it = gst_bin_iterate_sources (GST_BIN(encodebin)); - - gboolean done = FALSE; - GstElement *element = NULL; - gchar* name = NULL; GValue value = G_VALUE_INIT; while (!done) { @@ -1399,19 +1395,20 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, } } +#if GST_VERSION_MAJOR == 0 // HACK: remove streamsplitter and streamcombiner from // encodebin pipeline to prevent early EOF event handling // We always fetch BGR or gray-scale frames, so combiner->spliter // endge in graph is useless. it = gst_bin_iterate_recurse (GST_BIN(encodebin)); while (!done) { - switch (gst_iterator_next (it, (void**)&item)) { + switch (gst_iterator_next (it, (void**)&element)) { case GST_ITERATOR_OK: - name = gst_element_get_name(item); + name = gst_element_get_name(element); if (strstr(name, "streamsplitter")) - splitter = item; + splitter = element; else if (strstr(name, "streamcombiner")) - combiner = item; + combiner = element; break; case GST_ITERATOR_RESYNC: gst_iterator_resync (it); @@ -1453,6 +1450,7 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, gst_pad_link(sinkPeer, srcPeer); } +#endif stateret = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING); if(stateret == GST_STATE_CHANGE_FAILURE) { -- 2.7.4