Commit b1b2528e authored by Alexander Alekhin's avatar Alexander Alekhin

videoio: improve condition for MJPEG gstreamer sink

parent 942672ad
...@@ -178,6 +178,8 @@ protected: ...@@ -178,6 +178,8 @@ protected:
bool isPosFramesSupported; bool isPosFramesSupported;
bool isPosFramesEmulated; bool isPosFramesEmulated;
gint64 emulatedFrameNumber; gint64 emulatedFrameNumber;
bool isOutputByteBuffer;
}; };
/*! /*!
...@@ -205,6 +207,8 @@ void CvCapture_GStreamer::init() ...@@ -205,6 +207,8 @@ void CvCapture_GStreamer::init()
isPosFramesSupported = false; isPosFramesSupported = false;
isPosFramesEmulated = false; isPosFramesEmulated = false;
emulatedFrameNumber = -1; emulatedFrameNumber = -1;
isOutputByteBuffer = false;
} }
/*! /*!
...@@ -357,6 +361,7 @@ IplImage * CvCapture_GStreamer::retrieveFrame(int) ...@@ -357,6 +361,7 @@ IplImage * CvCapture_GStreamer::retrieveFrame(int)
} else if(strcasecmp(name, "image/jpeg") == 0) { } else if(strcasecmp(name, "image/jpeg") == 0) {
depth = 1; depth = 1;
// the correct size will be set once the first frame arrives // the correct size will be set once the first frame arrives
isOutputByteBuffer = true;
} }
#endif #endif
if (depth > 0) { if (depth > 0) {
...@@ -383,7 +388,8 @@ IplImage * CvCapture_GStreamer::retrieveFrame(int) ...@@ -383,7 +388,8 @@ IplImage * CvCapture_GStreamer::retrieveFrame(int)
gboolean success = gst_buffer_map(buffer,&info, (GstMapFlags)GST_MAP_READ); gboolean success = gst_buffer_map(buffer,&info, (GstMapFlags)GST_MAP_READ);
// with MJPEG streams frame size can change arbitrarily // with MJPEG streams frame size can change arbitrarily
if(int(info.size) != frame->imageSize) { if (isOutputByteBuffer && (size_t)info.size != (size_t)frame->imageSize)
{
cvReleaseImageHeader(&frame); cvReleaseImageHeader(&frame);
frame = cvCreateImageHeader(cvSize(info.size, 1), IPL_DEPTH_8U, 1); frame = cvCreateImageHeader(cvSize(info.size, 1), IPL_DEPTH_8U, 1);
} }
......
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