From: Rémi Bernon rbernon@codeweavers.com
--- dlls/mfreadwrite/reader.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c index a9d25848e7b..161075a7e92 100644 --- a/dlls/mfreadwrite/reader.c +++ b/dlls/mfreadwrite/reader.c @@ -41,6 +41,8 @@
WINE_DEFAULT_DEBUG_CHANNEL(mfplat);
+DEFINE_MEDIATYPE_GUID(MFVideoFormat_ABGR32, D3DFMT_A8B8G8R8); + struct stream_response { struct list entry; @@ -2036,6 +2038,17 @@ static HRESULT source_reader_create_transform(struct source_reader *reader, BOOL entry->min_buffer_size = max(entry->min_buffer_size, bytes_per_second); }
+ if (IsEqualGUID(&out_type.guidMajorType, &MFMediaType_Video) && IsEqualGUID(&out_type.guidSubtype, &MFVideoFormat_ABGR32) + && IsEqualGUID(&category, &MFT_CATEGORY_VIDEO_PROCESSOR)) + { + /* The video processor isn't registered for MFVideoFormat_ABGR32, and native event only supports that format when + * D3D-enabled, we want to instanciante a video processor nonetheless in such case, so fixup the subtype for MFTEnumEx. + */ + WARN("Fixing up MFVideoFormat_ABGR32 subtype for the video processor\n"); + out_type.guidSubtype = MFVideoFormat_RGB32; + } + + count = 0; if (SUCCEEDED(hr = MFTEnumEx(category, 0, &in_type, allow_processor ? NULL : &out_type, &activates, &count))) {