diff --git a/modules/videoio/src/cap_msmf.cpp b/modules/videoio/src/cap_msmf.cpp index d3002a5151..0b46be1ad9 100644 --- a/modules/videoio/src/cap_msmf.cpp +++ b/modules/videoio/src/cap_msmf.cpp @@ -347,6 +347,12 @@ struct MediaType } return false; } + bool VideoIsAvailable() const + { + return ((subType == MFVideoFormat_RGB32) || + (subType == MFVideoFormat_RGB24) || + (subType == MFVideoFormat_YUY2)); + } }; void printFormat(std::ostream& out, const GUID& fmt) @@ -627,7 +633,7 @@ public: { if (i->second.majorType == MFMediaType_Video) { - if (best.second.isEmpty() || i->second.VideoIsBetterThan(best.second, newType)) + if (best.second.isEmpty() || (i->second.VideoIsBetterThan(best.second, newType) && i->second.VideoIsAvailable())) { best = *i; }