函数连接两个随机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;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。