您的位置:首页 > 其它

DirectX:函数可以连接任意两个filter

2014-10-27 19:20 337 查看
函数可以连接任意两个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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐