我试图让3ivxfilters在我的C Directshow应用程序中工作,并且它仍然无法将3IVX视频编码器输出引脚连接到3IVX Media Muxer输入引脚 . 我总是得到错误VFW_E_CANNOT_CONNECT .
通过枚举标记来将所有过滤器添加到图形中,因此不会因为直接添加CLSID而出现任何问题 .
当我通过图形编辑打开图形并右键单击/选择Video Encoder输出引脚上的渲染时,它可以正常工作 .
这是我连接过滤器的代码:
HRESULT ConnectFilters(IGraphBuilder *pGraph, IBaseFilter *pSrc, IBaseFilter *pDest)
{
IPin *pOut = NULL;
// Find an output pin on the first filter.
HRESULT hr = FindUnconnectedPin(pSrc, PINDIR_OUTPUT, &pOut);
if (SUCCEEDED(hr))
{
hr = ConnectFilters(pGraph, pOut, pDest);
pOut->Release();
}
return hr;
}
基本上,一旦找到合适的引脚,它就会使用Connect方法 .
hr = pGraph->Connect(pOut, pIn);