Commit b1b2528e authored by Alexander Alekhin's avatar Alexander Alekhin

videoio: improve condition for MJPEG gstreamer sink

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