DMO 视频解码器问题
DMO 视频解码器问题
我按照C:\DXSDK\Samples\C++\DirectShow\DMO\DMOSample例子改写了一个视频解码器,注册正常,我要解码的文件是ASF,我的注册函数为:
STDAPI DllRegisterServer(void)
{
// Register ourselves as a DMO with no types
// RGS file also registers with a merit of 0 so DirectShow won't try to use us
DMO_PARTIAL_MEDIATYPE inMT,outMT;
inMT.type =MEDIATYPE_Video;
inMT.subtype =CLSID_DLH4_UC;
outMT.type =MEDIATYPE_Video;
outMT.subtype =MEDIASUBTYPE_RGB32;
HRESULT hr=DMORegister(L"DALI DLH4 Video Decoder DMO",
CLSID_Sample,
DMOCATEGORY_VIDEO_DECODER,
0,
1,
&inMT,
1,
&outMT);
if(FAILED(hr)) return hr;
// registers object
return _Module.RegisterServer();
}
用graphedt打开我的ASF文件,发现连接图正常而且是绿色的,用WINDOWS Media Player播放器打开我的ASF文件时提示"此对象只能创建为集合对象",如附件所示:
我跟踪调试了一下代码,播放时只调用了2次InternalGetOutputStreamInfo函数,其它函数都没调用,不知道这是为什么?但是其它播放器如Media Player Classic等播放器均可播放,请高手指点!!!!!
[解决办法]
你的dmo在graphedit里连接renderer了么