您的位置:首页 > 其它

DirectX:函数可以连接任意两个filter 分类: DirectX 2014-10-27 19:20 466人阅读 评论(0) 收藏

2014-10-27 19:20 363 查看
函数可以连接任意两个filter

HRESULT ConnectFilters( IBaseFilter *pSrc, IBaseFilter *pDest )
{
IPin *pIn = 0;
IPin *pOut = 0;
IEnumPins *pOutEnum;
IEnumPins *pInEnum;
PIN_DIRECTION ThisPinDir;

HRESULT hr = pSrc->EnumPins( &pOutEnum );
hr = pDest->EnumPins( &pInEnum );
while (pOutEnum->Next( 1, &pOut, NULL) == S_OK )
{
hr = pOut->QueryDirection( &ThisPinDir );
while( ThisPinDir==PINDIR_OUTPUT && pInEnum->Next( 1, &pIn, 0 ) == S_OK )
{
hr = pIn->QueryDirection( &ThisPinDir );
if( ThisPinDir==PINDIR_INPUT )
{
// Try to connect them.
hr = pigb->Connect( pOut, pIn);
if(SUCCEEDED(hr))
{
hr = pOutEnum->Release();
hr = pInEnum->Release();
hr = pIn->Release();
hr = pOut->Release();
return S_OK;
}

}
hr = pIn->Release();
}//end while

hr = pInEnum->Reset();
hr = pOut->Release();
}//end while
pOutEnum->Reset();
hr = pOutEnum->Release();
hr = pInEnum->Release();

return E_FAIL;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐