当前位置: 代码迷 >> 多媒体/流媒体开发 >> 关于IGraphBuilder:Render的一个很怪的有关问题?
  详细解决方案

关于IGraphBuilder:Render的一个很怪的有关问题?

热度:2658   发布时间:2013-02-26 00:00:00.0
关于IGraphBuilder::Render的一个很怪的问题??
我写了个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里面是否有对加载的限制条件
  相关解决方案