select correct MediaType in MSMF backend.

pull/22347/head
MENG Yu 3 years ago
parent cde18648dc
commit 6432f02996
  1. 8
      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;
}

Loading…
Cancel
Save