You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.1 KiB
73 lines
2.1 KiB
11 years ago
|
From 6d66d11046bb526d508e9543ecc37cfee91f4435 Mon Sep 17 00:00:00 2001
|
||
|
From: Dirk Van Haerenborgh <dirk.vanhaerenborgh@hogent.be>
|
||
|
Date: Wed, 12 Jun 2013 16:58:16 +0200
|
||
|
Subject: [PATCH 0865/3152] gstreamer: cleaning up resources
|
||
|
|
||
|
---
|
||
|
modules/highgui/src/cap_gstreamer.cpp | 42 +++++++++++++++++++++++++++++++++++
|
||
|
1 file changed, 42 insertions(+)
|
||
|
|
||
|
diff --git a/modules/highgui/src/cap_gstreamer.cpp b/modules/highgui/src/cap_gstreamer.cpp
|
||
|
index b8f4eb8..a347a74 100644
|
||
|
--- a/modules/highgui/src/cap_gstreamer.cpp
|
||
|
+++ b/modules/highgui/src/cap_gstreamer.cpp
|
||
|
@@ -1030,6 +1030,19 @@ void CvVideoWriter_GStreamer::close()
|
||
|
handleMessage(pipeline);
|
||
|
|
||
|
gst_object_unref (GST_OBJECT (pipeline));
|
||
|
+
|
||
|
+ if (source)
|
||
|
+ gst_object_unref (GST_OBJECT (source));
|
||
|
+
|
||
|
+ if (encodebin)
|
||
|
+ gst_object_unref (GST_OBJECT (encodebin));
|
||
|
+
|
||
|
+ if (file)
|
||
|
+ gst_object_unref (GST_OBJECT (file));
|
||
|
+
|
||
|
+ if (buffer)
|
||
|
+ gst_object_unref (GST_OBJECT (buffer));
|
||
|
+
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@@ -1155,6 +1168,35 @@ bool CvVideoWriter_GStreamer::open( const char * filename, int fourcc,
|
||
|
source = gst_bin_get_by_name(GST_BIN(encodebin), "appsrc0");
|
||
|
}
|
||
|
|
||
|
+// GstIterator *it = gst_bin_iterate_sources (GST_BIN(encodebin));
|
||
|
+
|
||
|
+
|
||
|
+// gboolean done = FALSE;
|
||
|
+// GstElement *item = NULL;
|
||
|
+
|
||
|
+// while (!done) {
|
||
|
+// switch (gst_iterator_next (it, &item)) {
|
||
|
+// case GST_ITERATOR_OK:
|
||
|
+// source = item;
|
||
|
+// gst_object_unref (item);
|
||
|
+// done = TRUE;
|
||
|
+// break;
|
||
|
+// case GST_ITERATOR_RESYNC:
|
||
|
+// gst_iterator_resync (it);
|
||
|
+// break;
|
||
|
+// case GST_ITERATOR_ERROR:
|
||
|
+// done = TRUE;
|
||
|
+// break;
|
||
|
+// case GST_ITERATOR_DONE:
|
||
|
+// done = TRUE;
|
||
|
+// break;
|
||
|
+// }
|
||
|
+// }
|
||
|
+// gst_iterator_free (it);
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
+
|
||
|
if (!source){
|
||
|
CV_ERROR(CV_StsError, "GStreamer: cannot find appsrc in manual pipeline\n");
|
||
|
return false;
|
||
|
--
|
||
|
1.9.3
|
||
|
|