directshow创建MPEG1 Splitter失败
在directshow中,使用CoCreateInstance创建MPEG1 Splitter失败。
在程序的开始部分已经用CoInitialize初始化,,结束的时候也已经用UnCoInitialize()。在VS2008下开发,使用windows mobile6模拟器进行测试。代码如下:
void CMedia::Decoder( CString m_Mp3File, CString m_AuFile )
{
HRESULT hr;
//IGraphBuilder *pGB = NULL;
hr=CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void **)&m_pGB);
if ( FAILED(hr)) return;
IPin* pin = NULL;
IPin* pOut = NULL;
// Have the graph builder construct its the appropriate graph automatically
//hr=pGB->RenderFile(m_Mp3File.AllocSysString(), NULL);
hr = CoCreateInstance(CLSID_AsyncReader, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pFileReader);
if (FAILED(hr)) return;
//MPEG-1 Filter
hr = CoCreateInstance(CLSID_MPEG1Splitter, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pMpeg1Stream);
if (FAILED(hr)) return;
//Mp3 Filter
hr = CoCreateInstance(CLSID_Layer3Decoder, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pMp3Decoder);
if (FAILED(hr)) return;
//Wave Dest Filter
hr = CoCreateInstance(CLSID_WavDest, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pWaveDest);
。。。。。
到//MPEG-1 Filter
hr = CoCreateInstance(CLSID_MPEG1Splitter, NULL, CLSCTX_INPROC_SERVER,IID_IBaseFilter, (void**)&pMpeg1Stream);这步的时候,hr返回值为0X80040154|没有注册类。。。但是在注册表和graphedit中都查找到CLSID_MPEG1Splitter有注册信息?求问大神这是个什么原因?该怎么解决呢?
[解决办法]
因为没有这个 filter