[MPlayer-dev-eng] [PATCH] Supporting DMO decoder from WMP11, multithreaded WMV3/VC1 decoding

Zhou Zongyi zhouzongyi at pset.suntec.net
Mon Jan 12 02:45:35 CET 2009

Hi all, 

Currently with ffmpeg's single-threaded wmv3/vc1 decoder MPlayer cannot smoothly play 20Mbps+ VC1 from HDDVD/Bluray. This patch allow mplayer to use WMP11's multi-threaded DMO decoder for WMV1/WMV2/WMV3/VC1. One needs to install WMP11 or just copy wmvdecod.dll to your C:\windows\system32 or codec path. 

Tested under WinXP SP3. It works fine. 

Part1: Disable debug codes from loader/dmo/dmo.c. They do nothing but break initialization of DMO filters. 

Index: loader/dmo/dmo.c  
--- loader/dmo/dmo.c (revision 28288)  
+++ loader/dmo/dmo.c (working copy)  
@@ -112,6 +112,7 @@  
+#if 0  
  if (0) {  
      DMO_MEDIA_TYPE dmo;  
             //VIDEOINFOHEADER* vi;  
@@ -154,6 +155,7 @@  
  hr = This->m_pMedia->vt->GetStreamCount(This->m_pMedia,    
  Debug printf("StreamCount r=0x%lx  %ld  %ld\n", hr, inputs, outputs);  
     if (em) 

Part2: Add codec information to etc/codec.conf (maybe more FOURCCs supported?) 

Index: etc/codecs.conf  
--- etc/codecs.conf (revision 28288)  
+++ etc/codecs.conf (working copy)  
@@ -960,6 +960,19 @@  
   out YUY2 yuvhack  
   out BGR32,BGR24,BGR15  
+videocodec wmv11dmo  
+  info "WMVideo Decoder DMO from WMP11"  
+  status working  
+  fourcc WMV1  
+  fourcc WMV2  
+  fourcc WMV3  
+  fourcc WVC1  
+  driver dmo  
+  dll "wmvdecod.dll"  
+  guid 0x82d353df, 0x90bd, 0x4382, 0x8b, 0xc2, 0x3f, 0x61, 0x92, 0xb7, 0x6e, 0x34  
+  out YV12  
+  out YUY2,UYVY  
 videocodec wmv9dmo  
   info "Windows Media Video 9 DMO"  
   status working

Zhou Zongyi

More information about the MPlayer-dev-eng mailing list