Code review fixes.
authorAlexander Smorkalov <alexander.smorkalov@itseez.com>
Tue, 16 Sep 2014 09:57:44 +0000 (13:57 +0400)
committerAlexander Smorkalov <alexander.smorkalov@itseez.com>
Tue, 16 Sep 2014 10:52:41 +0000 (14:52 +0400)
modules/videoio/src/cap_gstreamer.cpp
modules/videoio/test/test_video_io.cpp

index 7bb2a75fa711071c3384b86e8e56e2c8d3951163..6cd68ceef81403e4dfd5e8f7f9876312bf160446 100644 (file)
@@ -557,7 +557,6 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
 
     bool stream = false;
     bool manualpipeline = false;
-    bool st;
     char *uri = NULL;
     uridecodebin = NULL;
     GstElementFactory * testfac;
@@ -744,7 +743,7 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
     gst_app_sink_set_caps(GST_APP_SINK(sink), caps);
     gst_caps_unref(caps);
 
-    // For fideo files only: set pipeline to PAUSED state to get its duration
+    // For video files only: set pipeline to PAUSED state to get its duration
     if (stream)
     {
         status = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PAUSED);
@@ -766,15 +765,12 @@ bool CvCapture_GStreamer::open( int type, const char* filename )
 
         GstFormat format;
 
+        format = GST_FORMAT_DEFAULT;
 #if GST_VERSION_MAJOR == 0
-#define FORMAT &format
+        if(!gst_element_query_duration(sink, &format, &duration))
 #else
-#define FORMAT format
+        if(!gst_element_query_duration(sink, format, &duration))
 #endif
-
-        format = GST_FORMAT_DEFAULT;
-        st = gst_element_query_duration(sink, FORMAT, &duration);
-        if(!st)
         {
             CV_WARN("GStreamer: unable to query duration of stream");
             duration = -1;
@@ -1079,16 +1075,22 @@ void CvVideoWriter_GStreamer::close()
     GstStateChangeReturn status;
     if (pipeline)
     {
-        //handleMessage(pipeline);
+        handleMessage(pipeline);
 
         if (gst_app_src_end_of_stream(GST_APP_SRC(source)) != GST_FLOW_OK)
+        {
             CV_WARN("Cannot send EOS to GStreamer pipeline\n");
+            return;
+        }
 
         //wait for EOS to trickle down the pipeline. This will let all elements finish properly
         GstBus* bus = gst_element_get_bus(pipeline);
         GstMessage *msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));
         if (GST_MESSAGE_TYPE(msg) == GST_MESSAGE_ERROR)
+        {
             CV_WARN("Error during VideoWriter finalization\n");
+            return;
+        }
 
         if(msg != NULL)
         {
@@ -1435,7 +1437,7 @@ bool CvVideoWriter_GStreamer::writeFrame( const IplImage * image )
     }
 #endif
     else {
-        fprintf(stderr, "Invalid video format!\n");
+        CV_WARN("Invalid video format!\n");
         return false;
     }
 
index 12ea261475f5f6928d9446edba2f806f6ca79caf..b3d13e7c2f3aa468ca108a6c365f0d877b579612 100644 (file)
@@ -490,7 +490,6 @@ void CV_VideoIOTest::SpecificVideoTest(const string& dir, const cvtest::VideoFor
     if (fourcc == VideoWriter::fourcc('M', 'P', 'E', 'G') && ext == "mkv")
         allowed_extra_frames = 1;
 
-/*
     if (FRAME_COUNT < IMAGE_COUNT || FRAME_COUNT > IMAGE_COUNT + allowed_extra_frames)
     {
         ts->printf(ts->LOG, "\nFrame count checking for video_%s.%s...\n", fourcc_str.c_str(), ext.c_str());
@@ -505,7 +504,7 @@ void CV_VideoIOTest::SpecificVideoTest(const string& dir, const cvtest::VideoFor
         ts->set_failed_test_info(ts->FAIL_BAD_ACCURACY);
         return;
     }
-*/
+
     for (int i = 0; (size_t)i < IMAGE_COUNT; i++)
     {
         Mat frame; cap >> frame;