mirror of
https://github.com/opencv/opencv.git
synced 2026-07-31 00:03:03 +04:00
avoid needless copies during mjpeg decoding
This commit is contained in:
@@ -1612,15 +1612,11 @@ uyvy_to_rgb24 (int width, int height, unsigned char *src, unsigned char *dst)
|
||||
|
||||
/* convert from mjpeg to rgb24 */
|
||||
static bool
|
||||
mjpeg_to_rgb24 (int width, int height,
|
||||
unsigned char *src, int length,
|
||||
unsigned char *dst)
|
||||
{
|
||||
cv::Mat temp=cv::imdecode(cv::Mat(std::vector<uchar>(src, src + length)), 1);
|
||||
if( !temp.data || temp.cols != width || temp.rows != height )
|
||||
return false;
|
||||
memcpy(dst, temp.data, width*height*3);
|
||||
return true;
|
||||
mjpeg_to_rgb24(int width, int height, unsigned char* src, int length, IplImage* dst) {
|
||||
using namespace cv;
|
||||
Mat temp = cvarrToMat(dst);
|
||||
imdecode(Mat(1, length, CV_8U, src), IMREAD_COLOR, &temp);
|
||||
return temp.data && temp.cols == width && temp.rows == height;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -2068,7 +2064,7 @@ static IplImage* icvRetrieveFrameCAM_V4L( CvCaptureCAM_V4L* capture, int) {
|
||||
(unsigned char*)(capture->buffers[capture->bufferIndex]
|
||||
.start),
|
||||
capture->buffers[capture->bufferIndex].length,
|
||||
(unsigned char*)capture->frame.imageData))
|
||||
&capture->frame))
|
||||
return 0;
|
||||
break;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user