英雄,能解决问题的就是英雄!
eslea 2002-04-19 03:06:44 我在用DSHOW做MPEG1的网络播放器,大部分参考了CAPBOY的例子。在此表示感谢。在播放.MPG文件的时候一点问题都没有,自由,顺畅.可是为何不能播放VCD中的.DAT文件?问题出在SELECT AND RENDER 一段,我的函数是这样的:最后显示说:"failed render",各位英雄,请出招!
HRESULT CDshowControl::SelectAndRender(CMemReader *pReader, IGraphBuilder **ppFG)
{
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL,
CLSCTX_INPROC,
IID_IGraphBuilder,
(void**) ppFG);
if (FAILED(hr)) {
return hr;
}
/* Get the various interfaces we need */
IBaseFilter *m_MpegSplitter = NULL;
hr = CoCreateInstance( CLSID_MPEG1Splitter,
NULL,
CLSCTX_INPROC_SERVER,
IID_IBaseFilter,
(void **)&m_MpegSplitter );
//
// Add it to the graph
//
hr = (*ppFG)->AddFilter( m_MpegSplitter, L"SPLITTER" );
if (FAILED(hr)) {
AfxMessageBox("failed add filter!");
return hr;
}
/* Add our filter */
hr = (*ppFG)->AddFilter(pReader, NULL);
if (FAILED(hr)) {
AfxMessageBox("failed add filter!");
return hr;
}
/* Render our output pin */
hr = (*ppFG)->Render(pReader->GetPin(0));
if (FAILED(hr)) {
AfxMessageBox("failed render!");
return hr;
}
(*ppFG)->AddRef();
m_MpegSplitter->Release();
return hr;
}