Commit aa576342 authored by Alexander Smorkalov's avatar Alexander Smorkalov

Fixed compatibility with GStreamer 1.x.

parent a419b643
...@@ -1220,12 +1220,12 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, ...@@ -1220,12 +1220,12 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc,
GstEncodingVideoProfile* videoprofile = NULL; GstEncodingVideoProfile* videoprofile = NULL;
#endif #endif
bool done = false;
GstElement* item = NULL;
GstIterator* it = NULL; GstIterator* it = NULL;
char* name = NULL; gboolean done = FALSE;
GstElement* splitter; GstElement *element = NULL;
GstElement* combiner; gchar* name = NULL;
GstElement* splitter = NULL;
GstElement* combiner = NULL;
// we first try to construct a pipeline from the given string. // we first try to construct a pipeline from the given string.
// if that fails, we assume it is an ordinary filename // if that fails, we assume it is an ordinary filename
...@@ -1245,10 +1245,6 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, ...@@ -1245,10 +1245,6 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc,
} }
#else #else
it = gst_bin_iterate_sources (GST_BIN(encodebin)); it = gst_bin_iterate_sources (GST_BIN(encodebin));
gboolean done = FALSE;
GstElement *element = NULL;
gchar* name = NULL;
GValue value = G_VALUE_INIT; GValue value = G_VALUE_INIT;
while (!done) { while (!done) {
...@@ -1399,19 +1395,20 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, ...@@ -1399,19 +1395,20 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc,
} }
} }
#if GST_VERSION_MAJOR == 0
// HACK: remove streamsplitter and streamcombiner from // HACK: remove streamsplitter and streamcombiner from
// encodebin pipeline to prevent early EOF event handling // encodebin pipeline to prevent early EOF event handling
// We always fetch BGR or gray-scale frames, so combiner->spliter // We always fetch BGR or gray-scale frames, so combiner->spliter
// endge in graph is useless. // endge in graph is useless.
it = gst_bin_iterate_recurse (GST_BIN(encodebin)); it = gst_bin_iterate_recurse (GST_BIN(encodebin));
while (!done) { while (!done) {
switch (gst_iterator_next (it, (void**)&item)) { switch (gst_iterator_next (it, (void**)&element)) {
case GST_ITERATOR_OK: case GST_ITERATOR_OK:
name = gst_element_get_name(item); name = gst_element_get_name(element);
if (strstr(name, "streamsplitter")) if (strstr(name, "streamsplitter"))
splitter = item; splitter = element;
else if (strstr(name, "streamcombiner")) else if (strstr(name, "streamcombiner"))
combiner = item; combiner = element;
break; break;
case GST_ITERATOR_RESYNC: case GST_ITERATOR_RESYNC:
gst_iterator_resync (it); gst_iterator_resync (it);
...@@ -1453,6 +1450,7 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc, ...@@ -1453,6 +1450,7 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc,
gst_pad_link(sinkPeer, srcPeer); gst_pad_link(sinkPeer, srcPeer);
} }
#endif
stateret = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING); stateret = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING);
if(stateret == GST_STATE_CHANGE_FAILURE) { if(stateret == GST_STATE_CHANGE_FAILURE) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment