From de0b46a765829ddc07fbc2ee28d093bad915be8e Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Thu, 2 Oct 2014 11:48:47 +0200 Subject: [PATCH] Fixed selecting media type in DShow video capture. Set correct value of sample size when calling IAMStreamConfig::SetFormat function. For non-RGB media type it can be set to zero value. (See http://msdn.microsoft.com/en-us/library/windows/desktop/dd373477%28v=vs.85%29.aspx) --- modules/videoio/src/cap_dshow.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/videoio/src/cap_dshow.cpp b/modules/videoio/src/cap_dshow.cpp index efbbd08..87fc300 100644 --- a/modules/videoio/src/cap_dshow.cpp +++ b/modules/videoio/src/cap_dshow.cpp @@ -2416,7 +2416,15 @@ static bool setSizeAndSubtype(videoDevice * VD, int attemptWidth, int attemptHei VD->pAmMediaType->subtype = mediatype; //buffer size - VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3; + if (mediatype == MEDIASUBTYPE_RGB24) + { + VD->pAmMediaType->lSampleSize = attemptWidth*attemptHeight*3; + } + else + { + // For compressed data, the value can be zero. + VD->pAmMediaType->lSampleSize = 0; + } //set fps if requested if( VD->requestedFrameTime != -1){ -- 2.7.4