CComPtr<IPin> GetPinByName(IBaseFilter *pFilter,LPCOLESTR lpPinName)
{
    CComPtr<IEnumPins> pEnumPins;
 
    HRESULT hr=pFilter->EnumPins(&pEnumPins);
    if(FAILED(hr))
    {
        return NULL;
    }
 
    CComPtr<IPin> pPin;
    while(pEnumPins->Next((ULONG)1,&pPin,NULL)==S_OK)
    {
        //注意QueryPinInfo返回的pinInfo.pFilter必须手动释放
        PIN_INFO pinInfo;
        pPin->QueryPinInfo(&pinInfo);
 
        if (pinInfo.pFilter!=NULL)
        {
            pinInfo.pFilter->Release();
            pinInfo.pFilter=NULL;
        }
 
        if (wcsicmp(lpPinName,pinInfo.achName)!=0)
        {
            pPin.Release();
            continue;
        }
 
        //找到了名字叫lpPinNamePin
        return pPin;
    }
 
    return NULL;
}

 


本文链接地址: DirectShow.3 GetPinByName(通过名字获取Filter的IPin接口指针)
https://blog.qingfengju.com/index.asp?id=266

上一篇: 矩阵左右旋转90度的最一般算法
下一篇: 让Windows Mobile程序运行时不休眠,不关背光

分类:Win32/C++ 查看次数:8188 发布时间:2011/11/19 9:55:04