[MPlayer-cygwin] Fast CoreAVC DShow H264 decoder - Need help

Stefan Gürtler helfmir at surfeu.de
Tue Jan 17 10:12:59 CET 2006


John Brown schrieb:

Thank you for your patience with me.

>> I took away the ';' at the beginnig of the guid-line.
>> So when I try playback with the new setup, i get a differnt error.
>>
>> ========================================================================== 
>>
>> Forced video codec: coreavc
>> Opening video decoder: [dshow] DirectShow video codecs
>> ERROR: Could not open required DirectShow codec CoreAVCDecoder.ax.
>> Warning: DS_Filter() could not open DirectShow DLL. 
>> (DLL=CoreAVCDecoder.ax, r=0x51a3e10)
>> Failed to create DirectShow filter
> 
> ...
> 
>> I did not find this code in /mingw/include/winerror.
> 
> 
> Is that GUID the actual GUID in the Windows Registry that corresponds to 
> your .ax file? If not, then it will not work.
> 

I was refering to the error code (r=0x51a3e10) in the Warning
Warning: DS_Filter() could not open DirectShow DLL. 
(DLL=CoreAVCDecoder.ax, r=0x51a3e10)

> 
>> But without This->m_iHanlde being null, em never becomes the string
>> "could not open DirectShow DLL" that is printed at the end of the 
>> for-loop?
> 
> 
> Based on the code fragment in your post, I would agree with you that if 
> em == "could not open DirectShow DLL", then LoadLibrary failed. This 
> also means that the result variable is uninitialized, so that it is 
> neither a Windows error nor a CoreAVCDecoder error. Please note that I 
> have not looked at the source for myself. I am much too lazy for that.
> 
> LoadLibrary("CoreAVCDecoder.ax") will look in several places for Core 
> AVCDecoder.ax: the directory that contains the calling program the 
> current directory, the Windows directory, the Windows System directory, 
> the %PATH%, etc. (listed in no particular order). We would not, 
> therefore, expect LoadLibrary to fail for a codec, which would normally 
> be in the System directory

It seems you are correckt about the dll not being found though I put it 
into an codecs dir specifyed througth the ./configure 
--with-codecsdir=/some/ablsolut/path.
With CoreAVCDecoder.ax next to mplayer.exe:
==========================================================================
Forced video codec: coreavc
Opening video decoder: [dshow] DirectShow video codecs
ERROR: Could not open required DirectShow codec CoreAVCDecoder.ax.
Warning: DS_Filter() no such class object.  (DLL=CoreAVCDecoder.ax, 
r=0x80040111)
Failed to create DirectShow filter
You need to upgrade/install the binary codecs package.
Go to http://mplayerhq.hu/homepage/dload.html
VDecoder init failed :(
Cannot find codec matching selected -vo and video format 0x31637661.
Read DOCS/HTML/en/codecs.html!
==========================================================================

New /odl error code r=0x80040111. Looks like I have to work on the 
GUIDs, finally.

With CoreAVCDecoder.ax only in the codecsdir:
==========================================================================
Forced video codec: coreavc
Opening video decoder: [dshow] DirectShow video codecs
ERROR: Could not open required DirectShow codec CoreAVCDecoder.ax.
Warning: DS_Filter() could not open DirectShow DLL. 
(DLL=CoreAVCDecoder.ax, r=0x51a3e10)
Failed to create DirectShow filter
You need to upgrade/install the binary codecs package.
Go to http://mplayerhq.hu/homepage/dload.html
VDecoder init failed :(
Cannot find codec matching selected -vo and video format 0x31637661.
Read DOCS/HTML/en/codecs.html!
==========================================================================

Again the unknow error code that i could not find in 
/mingw/lib/winerrors.h or in MSDN Dateabase information of winerror.h

> 
> So I would try adding the codecs directory to %PATH%. But remember, you 
> have to use the right GUID.
> 
> Of course, even if a DLL is in the LoadLibrary search path, it may not 
> be able to be loaded for other reasons.  If DLL initialization fails, 
> then LoadLibrary will also fail. For example, a file that the DLL 
> depends on may be missing.
> 
> This may be a basic question, but have you actually tried this codec in 
> Windows Media Player and confirmed that it is correctly installed
> 
Testing of CoreAVCDecoder.ax in a DShow player was stalled up to now, as 
my source from apple.com was one of the few that are not to be remuxed 
from mov to mp4 with mp4box or mp4creator. So I recoded one trailer with 
mencoder and x264 to avi and just tryed playing it.
OK, regsrv32 CoreAVCDecoder.ax, disable H264 in ffdshwo and playback of 
my x264-in-avi works fine with MediaPlayerClassic and CoreAVCDecoder as 
decoder.

I am following the suggestions from 
http://www.mplayerhq.hu/DOCS/HTML/en/codecs.html and downloaded and 
installed graphedit.exe.
The line with the GUIDs of CoreAVCDecoder.exe is:
@device:sw:{083863F1-70DE-11D0-BD40-00A0C911CE86}\{09571A4B-F1FE-4C60-9760-DE6D310C7C31}
So this are two GUIDs. But I do not get how to read the eleven entries 
for codecs.conf out of that?

Even if i take videocodec wmv8 as sample, I fail:
codocs.conf:
dll "wmv8ds32.ax"
   guid 0x521fb373, 0x7654, 0x49f2, 0xbd, 0xb1, 0x0c, 0x6e, 0x66, 0x60, 
0x71, 0x4f
graphedit:
DisplayName: 
@device:dmo:{82D353DF-90BD-4382-8BC2-3F6192B76E34}{4A69B442-28BE-4991-969C-B500ADF5D8A8}
Filename: C:\WINDOWS\System32\wmv8ds32.ax

How to convert a DWORD to an hex-value? MS calc allows me to input 
HEX-values as WORD or DWORD, but I did not fine a way to convert e.g. 
90BD to 0x7654 (Second value of wmv8 sample)

Stefan




More information about the MPlayer-cygwin mailing list