[Bug 59506] New: IMFMediaEngine video playback fails: no MFT_CATEGORY_VIDEO_PROCESSOR registered for NV12→RGB32 color conversion
http://bugs.winehq.org/show_bug.cgi?id=59506 Bug ID: 59506 Summary: IMFMediaEngine video playback fails: no MFT_CATEGORY_VIDEO_PROCESSOR registered for NV12→RGB32 color conversion Product: Wine Version: 11.4 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mfplat Assignee: wine-bugs@list.winehq.org Reporter: Loong.0x00@gmail.com Distribution: --- IMFMediaEngine video playback fails because no MFT_CATEGORY_VIDEO_PROCESSOR transform is registered to handle color space conversion (NV12 → RGB32). On Windows, the Color Converter DSP (CLSID_CColorConvertDMO) handles this. Wine does not register any equivalent MFT in this category. == Failure chain (traced with WINEDEBUG=+mf,+mfplat,+mfmediaengine) == 1. IMFMediaEngine::SetSourceFromByteStream("video.mp4") → OK 2. Source resolver creates media source from byte stream → OK 3. topology_loader_Load runs (real implementation, not a stub despite FIXME string) 4. MFTEnumEx(MFT_CATEGORY_VIDEO_DECODER, H264) → finds h264_decoder, activates OK 5. GStreamer pipeline: h264parse → avdec_h264 → videoconvert, all linked successfully 6. H264 decoder outputs NV12 7. video_frame_sink expects RGB32 (MFVideoFormat_RGB32, GUID {00000020-0000-0010-8000-00aa00389b71}) 8. MFTEnumEx(MFT_CATEGORY_VIDEO_PROCESSOR, NV12→RGB32) → returns 0 results ← ROOT CAUSE 9. topology_branch_connect returns 0xc00d5212 (MF_E_TRANSFORM_NOT_POSSIBLE) 10. session_set_topology fails with 0xc00d36b9 (MF_E_TOPO_UNSUPPORTED) 11. MEError 0xc00d3e85 (MF_E_TOPO_CODEC_NOT_FOUND) propagated to application == Additional stubs == IMFMediaEngineEx::SetAutoPlay() and SetLoop() store the flag internally but the playback engine never consumes it, so video looping does not work. == Affected application == Wallpaper Engine (Steam AppID 431960). Scene wallpapers with embedded video textures use IMFMediaEngine::SetSourceFromByteStream() to decode .mp4 files as texture layers. All such wallpapers fail with grey/blank video layers. == Relevant trace excerpt == topology_loader_Load iface ..., input_topology ..., ret_topology ..., current_topology 0x0 stub! MFTEnumEx MFT_CATEGORY_VIDEO_DECODER, 0x3f, {MFMediaType_Video,MFVideoFormat_H264}, ... → found h264_decoder h264_decoder_create ... wg_transform_create: input caps video/x-h264, output caps video/x-raw, format=I420, 1920x1080 gst_pad_link_full: linked avdec_h264-0:src and videoconvert0:sink, successful MFTEnumEx MFT_CATEGORY_VIDEO_PROCESSOR, 0x3f, {MFMediaType_Video,MFVideoFormat_NV12}, {MFMediaType_Video,{00000020-...}} → 0 results topology_branch_connect returning 0xc00d5212 topology_branch_connect returning 0xc00d36b9 session_set_topology failed to load topology ..., hr 0xc00d36b9 == System == Wine 11.4 (also reproduced with Valve's wine-staging 10.0 via GE-Proton10-32) Arch Linux x86_64, kernel 6.19.6 GStreamer 1.22.5, h264 decoders available (avdec_h264, openh264dec, nvh264dec) == Suggested fix == Register a GStreamer-backed MFT_CATEGORY_VIDEO_PROCESSOR that wraps videoconvert for NV12/I420 → RGB32 conversion. The GStreamer videoconvert element is already used internally by the decoder pipeline. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla