我正在尝试让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);