我写了个SourceFilter,有两个输出Pin,没有输入Pin,我在GraphEdit中加入这个过滤器,然后对输出Pin进行Render Pin,结果是可以的
但是我在代码中进行Render Pin,却返回错误-2147024770(找不到指定的模块)?,代码如下:
HRESULT hr;
IPin *pOutPin[2] = {NULL, NULL};
ULONG ulPinNum;
IEnumPins *pEmunPin;
hr = m_pPreFilter->EnumPins(&pEmunPin);
ASSERT(S_OK == hr);
hr = pEmunPin->Next(p_ulPinNums, pOutPin, &ulPinNum);
ASSERT(S_OK == hr);
for(ULONG ulIndex = 0; ulIndex < ulPinNum; ulIndex++)
{
hr = m_pGraph->Render(pOutPin[ulIndex]); //这里返回错误?????
}
SaveGraphFile(m_pGraph, L"D:\\bbbb.grf"); //用这个保存后的grf文件,在GraphEdit中打开,进行Render Pin,结果还是可以的。
大侠们,能否帮忙指点一下
------解决方案--------------------------------------------------------
你的filter是不是用了其他的dll,最好把各种文件放在一个目录。
------解决方案--------------------------------------------------------
在使用当中,最好还是手动的去连接filter,尽量不要使用render pin,因为有时候是不可控制的。
------解决方案--------------------------------------------------------
貌似你的循环很奇怪哦,这样试试
ULONG ulFound = 0;
IPin * pPin = NULL;
hr = E_FAIL;
while (S_OK == pEmunPin->Next(1, &pPin, &ulFound))
{
hr = pIGraph->Render(pPin);
pPin->Release();
}
------解决方案--------------------------------------------------------
是pll还是push的source?
给source指定文件或传输数据了没?
GraphEdit测试的时候,是怎么打开的多媒体文件
------解决方案--------------------------------------------------------
恭喜lz解决问题,我来接分
------解决方案--------------------------------------------------------
ffdshow不是开源的吗,看看你使用到的filter的dllmain里面是否有对加载的限制条件