From 6432f029968b7d039f17f9b3f032fa9d320cfbc5 Mon Sep 17 00:00:00 2001 From: MENG Yu Date: Sat, 6 Aug 2022 01:52:33 +0800 Subject: [PATCH] select correct MediaType in MSMF backend. --- modules/videoio/src/cap_msmf.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/videoio/src/cap_msmf.cpp b/modules/videoio/src/cap_msmf.cpp index d3002a5..0b46be1 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; } -- 2.7.4