亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? graph.cpp

?? VC++視頻開發(fā)實(shí)例集錦(包括“遠(yuǎn)程視頻監(jiān)控”"語音識別系統(tǒng)"等13個經(jīng)典例子)
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
CBDAFilterGraph::LoadFilter(
    REFCLSID clsid, 
    IBaseFilter** ppFilter,
    IBaseFilter* pConnectFilter, 
    BOOL fIsUpstream
    )
{
    HRESULT                 hr = S_OK;
    BOOL                    fFoundFilter = FALSE;
    CComPtr <IMoniker>      pIMoniker;
    CComPtr <IEnumMoniker>  pIEnumMoniker;

    if (!m_pICreateDevEnum)
    {
        hr = m_pICreateDevEnum.CoCreateInstance(CLSID_SystemDeviceEnum);
        if (FAILED (hr))
        {
            ErrorMessageBox(TEXT("LoadFilter(): Cannot CoCreate ICreateDevEnum"));
            return hr;
        }
    }

    // obtain the enumerator
    hr = m_pICreateDevEnum->CreateClassEnumerator(clsid, &pIEnumMoniker, 0);
    // the call can return S_FALSE if no moniker exists, so explicitly check S_OK
    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("LoadFilter(): Cannot CreateClassEnumerator"));
        return hr;
    }
    if (S_OK != hr)  // Class not found
    {
        ErrorMessageBox(TEXT("LoadFilter(): Class not found, CreateClassEnumerator returned S_FALSE"));
        return E_UNEXPECTED;
    }

    // next filter
    while(pIEnumMoniker->Next(1, &pIMoniker, 0) == S_OK)
    {
        // obtain filter's friendly name
        CComPtr <IPropertyBag>  pBag;
        hr = pIMoniker->BindToStorage(
                                    NULL, 
                                    NULL, 
                                    IID_IPropertyBag,
                                    reinterpret_cast<void**>(&pBag)
                                    );

        if(FAILED(hr))
        {
            OutputDebugString (TEXT("LoadFilter(): Cannot BindToStorage"));
            return hr;
        }

        CComVariant varBSTR;
        hr = pBag->Read(L"FriendlyName", &varBSTR, NULL);
        if(FAILED(hr))
        {
            OutputDebugString (TEXT("LoadFilter(): IPropertyBag->Read method failed"));
            pIMoniker = NULL;
            continue;
        }

        // bind the filter
        CComPtr <IBaseFilter>   pFilter;
        hr = pIMoniker->BindToObject(
                                    NULL, 
                                    NULL, 
                                    IID_IBaseFilter,
                                    reinterpret_cast<void**>(&pFilter)
                                    );

        if (FAILED(hr))
        {
            pIMoniker = NULL;
            pFilter = NULL;
            continue;
        }


        hr = m_pFilterGraph->AddFilter (pFilter, varBSTR.bstrVal);

        if (FAILED(hr))
        {
            OutputDebugString (TEXT("Cannot add filter\n"));
            return hr;
        }

        //MessageBox (NULL, _T(""), _T(""), MB_OK);
        // test connections
        // to upstream filter
        if (pConnectFilter)
        {
            if(fIsUpstream)
            {
                hr = ConnectFilters (pConnectFilter, pFilter);
            }
            else
            {
                hr = ConnectFilters (pFilter, pConnectFilter);
            }

            if(SUCCEEDED(hr))
            {
                //that's the filter we want
                fFoundFilter = TRUE;
                pFilter.QueryInterface (ppFilter);
                break;
            }
            else
            {
                fFoundFilter = FALSE;
                // that wasn't the the filter we wanted
                // so unload and try the next one
                hr = m_pFilterGraph->RemoveFilter(pFilter);

                if(FAILED(hr))
                {
                    OutputDebugString(TEXT("Failed unloading Filter\n"));
                    return hr;
                }
            }
        }
        else
        {
            fFoundFilter = TRUE;
            pFilter.QueryInterface (ppFilter);
            break;
        }

        pIMoniker = NULL;
        pFilter = NULL;
    } // while
    return S_OK;
}


// loads the demux into the FilterGraph
HRESULT
CBDAFilterGraph::LoadDemux()
{
    HRESULT hr = S_OK;
    
    hr = CoCreateInstance(
                        CLSID_MPEG2Demultiplexer, 
                        NULL, 
                        CLSCTX_INPROC_SERVER,
                        IID_IBaseFilter, 
                        reinterpret_cast<void**>(&m_pDemux)
                        );
    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("Could not CoCreateInstance CLSID_MPEG2Demultiplexer\n"));
        return hr;
    }

    hr = m_pFilterGraph->AddFilter(m_pDemux, L"Demux");
    if(FAILED(hr))
    {
        ErrorMessageBox(TEXT("Unable to add demux filter to graph\n"));
        return hr;
    }

    return hr;
}


// renders demux output pins
HRESULT
CBDAFilterGraph::RenderDemux()
{
    HRESULT             hr = S_OK;
    CComPtr <IPin>      pIPin;
    CComPtr <IPin>      pDownstreamPin;
    CComPtr <IEnumPins> pIEnumPins;
    PIN_DIRECTION       direction;

    if (!m_pDemux)
    {
        return E_FAIL;
    }

    // connect the demux to the capture device
    hr = ConnectFilters (m_pCaptureDevice, m_pDemux);

    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("Cannot connect demux to capture filter\n"));
        return hr;
    }

    // load transform information filter and connect it to the demux
    hr = LoadFilter (
                    KSCATEGORY_BDA_TRANSPORT_INFORMATION, 
                    &m_pTIF, 
                    m_pDemux, 
                    TRUE
                    );
    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("Cannot load TIF\n"));
        return hr;
    }

    // load multi protocol encapsulator
    hr = LoadFilter (
                    KSCATEGORY_BDA_RECEIVER_COMPONENT, 
                    &m_pMPE, 
                    m_pDemux, 
                    TRUE
                    );
    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("Cannot load MPE\n"));
        return hr;
    }

    // load IP Sink
    hr = LoadFilter (
                    KSCATEGORY_IP_SINK, 
                    &m_pIPSink, 
                    m_pMPE, 
                    TRUE
                    );
    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("Cannot load IP Sink\n"));
        return hr;
    }

    // render/connect the rest of the demux pins
    hr = m_pDemux->EnumPins (&pIEnumPins);
    if (FAILED (hr))
    {
        ErrorMessageBox(TEXT("Cannot get the enumpins\n"));
        return hr;
    }

    while(pIEnumPins->Next(1, &pIPin, 0) == S_OK)
    {
        hr = pIPin->QueryDirection(&direction);

        if(direction == PINDIR_OUTPUT)
        {
            pIPin->ConnectedTo (&pDownstreamPin);

            if(pDownstreamPin == NULL)
            {
                m_pFilterGraph->Render (pIPin);
            }

            pDownstreamPin = NULL;
        }
        pIPin = NULL;
    }

    return hr;
}


// removes each filter from the graph
HRESULT
CBDAFilterGraph::TearDownGraph()
{
    HRESULT hr = S_OK;
    CComPtr <IBaseFilter> pFilter;
    CComPtr <IEnumFilters> pIFilterEnum;

    m_pITuningSpace = NULL;

    if(m_fGraphBuilt || m_fGraphFailure)
    {
        // unload manually added filters
        m_pFilterGraph->RemoveFilter(m_pIPSink);
        m_pFilterGraph->RemoveFilter(m_pMPE);
        m_pFilterGraph->RemoveFilter(m_pTIF);
        m_pFilterGraph->RemoveFilter(m_pDemux);
        m_pFilterGraph->RemoveFilter(m_pNetworkProvider);
        m_pFilterGraph->RemoveFilter(m_pTunerDevice);
        m_pFilterGraph->RemoveFilter(m_pCaptureDevice);

        m_pIPSink = NULL;
        m_pMPE = NULL;
        m_pTIF = NULL;
        m_pDemux = NULL;
        m_pNetworkProvider = NULL;
        m_pTunerDevice = NULL;
        m_pDemodulatorDevice = NULL;
        m_pCaptureDevice = NULL;

        // now go unload rendered filters
        hr = m_pFilterGraph->EnumFilters(&pIFilterEnum);

        if(FAILED(hr))
        {
            ErrorMessageBox(TEXT("TearDownGraph: cannot EnumFilters\n"));
            return E_FAIL;
        }

        pIFilterEnum->Reset();

        while(pIFilterEnum->Next(1, &pFilter, 0) == S_OK) // addrefs filter
        {
            hr = m_pFilterGraph->RemoveFilter(pFilter);

            if (FAILED (hr))
                return hr;

            pIFilterEnum->Reset();
            pFilter.Release ();
        }
    }

#ifdef REGISTER_FILTERGRAPH
    if (m_dwGraphRegister)
    {
        RemoveGraphFromRot(m_dwGraphRegister);
        m_dwGraphRegister = 0;
    }
#endif

    m_fGraphBuilt = FALSE;
    return S_OK;
}


// ConnectFilters is called from BuildGraph
// to enumerate and connect pins
HRESULT
CBDAFilterGraph::ConnectFilters(
    IBaseFilter* pFilterUpstream, 
    IBaseFilter* pFilterDownstream
    )
{
    HRESULT         hr = E_FAIL;

    CComPtr <IPin>  pIPinUpstream;


    PIN_INFO        PinInfoUpstream;
    PIN_INFO        PinInfoDownstream;

    // validate passed in filters
    ASSERT (pFilterUpstream);
    ASSERT (pFilterDownstream);

    // grab upstream filter's enumerator
    CComPtr <IEnumPins> pIEnumPinsUpstream;
    hr = pFilterUpstream->EnumPins(&pIEnumPinsUpstream);

    if(FAILED(hr))
    {
        ErrorMessageBox(TEXT("Cannot Enumerate Upstream Filter's Pins\n"));
        return hr;
    }

    // iterate through upstream filter's pins
    while (pIEnumPinsUpstream->Next (1, &pIPinUpstream, 0) == S_OK)
    {
        hr = pIPinUpstream->QueryPinInfo (&PinInfoUpstream);
        if(FAILED(hr))
        {
            ErrorMessageBox(TEXT("Cannot Obtain Upstream Filter's PIN_INFO\n"));
            return hr;
        }

        CComPtr <IPin>  pPinDown;
        pIPinUpstream->ConnectedTo (&pPinDown);

        // bail if pins are connected
        // otherwise check direction and connect
        if ((PINDIR_OUTPUT == PinInfoUpstream.dir) && (pPinDown == NULL))
        {
            // grab downstream filter's enumerator
            CComPtr <IEnumPins> pIEnumPinsDownstream;
            hr = pFilterDownstream->EnumPins (&pIEnumPinsDownstream);
            if(FAILED(hr))
            {
                ErrorMessageBox(TEXT("Cannot enumerate pins on downstream filter!\n"));
                return hr;
            }

            // iterate through downstream filter's pins
            CComPtr <IPin>  pIPinDownstream;
            while (pIEnumPinsDownstream->Next (1, &pIPinDownstream, 0) == S_OK)
            {
                // make sure it is an input pin
                hr = pIPinDownstream->QueryPinInfo(&PinInfoDownstream);
                if(SUCCEEDED(hr))
                {
                    CComPtr <IPin>  pPinUp;

                    // Determine if the pin is already connected.  Note that 
                    // VFW_E_NOT_CONNECTED is expected if the pin isn't yet connected.
                    hr = pIPinDownstream->ConnectedTo (&pPinUp);
                    if(FAILED(hr) && hr != VFW_E_NOT_CONNECTED)
                    {
                        ErrorMessageBox(TEXT("Failed in pIPinDownstream->ConnectedTo()!\n"));
                        continue;
                    }

                    if ((PINDIR_INPUT == PinInfoDownstream.dir) && (pPinUp == NULL))
                    {
                        if (SUCCEEDED (m_pFilterGraph->Connect(
                                        pIPinUpstream,
                                        pIPinDownstream))
                                        )
                        {
                            PinInfoDownstream.pFilter->Release();
                            PinInfoUpstream.pFilter->Release();
                            return S_OK;
                        }
                    }
                }

                PinInfoDownstream.pFilter->Release();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜激情片| 国产日韩欧美一区二区三区综合| 久久精品在这里| 美腿丝袜亚洲综合| 91精品免费观看| 三级不卡在线观看| 欧美精品在线观看播放| 一区二区在线观看视频| 色综合久久久久久久久| 中文字幕色av一区二区三区| 国产精品亚洲一区二区三区妖精 | 亚洲国产精品综合小说图片区| 成人免费视频视频| 国产精品素人视频| 色天天综合久久久久综合片| 一区二区三区在线观看视频| 在线视频国内一区二区| 日日夜夜一区二区| 精品黑人一区二区三区久久| 秋霞午夜av一区二区三区| 精品少妇一区二区三区| 国产精品综合网| 中文字幕日本不卡| 这里只有精品视频在线观看| 极品瑜伽女神91| 亚洲欧美精品午睡沙发| 91精品国产综合久久香蕉的特点| 精品一区二区三区日韩| 成人欧美一区二区三区黑人麻豆| 欧美日韩国产高清一区二区三区 | 欧美日韩国产在线播放网站| 久久精品国产99| 国产精品视频一二| 538prom精品视频线放| 国产成人一区在线| 日韩一区欧美二区| 亚洲激情一二三区| 国产欧美日本一区视频| 91精品国产品国语在线不卡| 色综合天天综合色综合av| 久久se精品一区二区| 亚洲福利一二三区| 亚洲一区二区三区中文字幕在线 | 欧美丝袜丝nylons| av福利精品导航| 国产aⅴ综合色| 精品一区二区三区香蕉蜜桃| 亚洲一本大道在线| 一区二区三区欧美在线观看| 亚洲欧洲国产日本综合| 国产拍欧美日韩视频二区| 日韩欧美在线综合网| 欧美日韩亚洲不卡| 欧美高清性hdvideosex| 欧美日韩国产乱码电影| 欧美日韩亚洲国产综合| 欧美三片在线视频观看 | 国产精品自拍毛片| 国产精品91xxx| thepron国产精品| 91传媒视频在线播放| 欧美色电影在线| 日韩欧美亚洲国产精品字幕久久久| 欧美日本一道本| 精品伦理精品一区| 久久精品亚洲国产奇米99| 中文字幕久久午夜不卡| 最新国产成人在线观看| 亚洲成人精品在线观看| 免费成人av资源网| 成人短视频下载| 欧美日韩一区二区欧美激情| 亚洲精品一线二线三线无人区| 亚洲国产成人午夜在线一区| 亚洲一区二区三区视频在线播放| 午夜av一区二区| 国产精品一二三四五| 欧美特级限制片免费在线观看| 制服丝袜亚洲网站| 亚洲日本欧美天堂| 狠狠色综合播放一区二区| 欧美视频一区二区三区在线观看| 制服视频三区第一页精品| 亚洲人午夜精品天堂一二香蕉| 青椒成人免费视频| 在线播放91灌醉迷j高跟美女| 国产精品污网站| 国内外成人在线| 日韩精品一区在线观看| 亚洲无人区一区| 一本色道久久加勒比精品| 久久久亚洲精品一区二区三区| 五月婷婷久久丁香| 在线观看亚洲精品| 亚洲欧洲精品成人久久奇米网| 国产精品资源在线看| 日韩一区二区三区三四区视频在线观看| 国产精品乱码久久久久久| 国产主播一区二区| 国产午夜一区二区三区| 国产一区二区美女诱惑| 欧美mv日韩mv| 国产高清无密码一区二区三区| 日韩一二三四区| 狠狠色狠狠色合久久伊人| 日韩欧美在线观看一区二区三区| 亚洲综合免费观看高清完整版在线 | 另类小说图片综合网| 欧美精品 日韩| 精品一区二区三区不卡| 精品国产乱码久久久久久久久| 麻豆久久一区二区| 国产日产欧美一区| 色综合网色综合| 男女性色大片免费观看一区二区 | 一本色道久久加勒比精品| 亚洲自拍偷拍麻豆| 日韩欧美三级在线| 成人免费av在线| 亚洲韩国一区二区三区| 日韩欧美国产系列| 成人av综合一区| 蜜臀精品一区二区三区在线观看 | caoporn国产一区二区| 亚洲综合色在线| 欧美国产综合色视频| 欧美日韩高清一区二区| 国产99久久久精品| 午夜激情综合网| 亚洲少妇30p| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美精品一区二区三区四区| 在线观看国产精品网站| 国产一区二区精品久久| 日本免费在线视频不卡一不卡二 | 欧美精品一区二| 欧美日韩aaa| 欧美日韩美女一区二区| 99久久99久久精品免费观看 | 51精品秘密在线观看| 91极品视觉盛宴| 99精品黄色片免费大全| 欧美日韩五月天| 欧美蜜桃一区二区三区| 色94色欧美sute亚洲线路一ni| 国产福利91精品| 国产成人午夜精品5599| 国产麻豆精品在线| 国内精品久久久久影院一蜜桃| 日韩精品免费专区| 天天综合天天综合色| 一区二区三区**美女毛片| 亚洲欧美国产77777| 亚洲女同一区二区| 亚洲免费大片在线观看| 亚洲最大色网站| 日韩综合一区二区| 九色综合狠狠综合久久| 国产自产高清不卡| 91影院在线免费观看| 欧美中文字幕一区二区三区 | 日韩欧美在线不卡| 国产精品久久久久久一区二区三区| 国产精品国产成人国产三级 | 亚洲欧美乱综合| 天天av天天翘天天综合网| 老鸭窝一区二区久久精品| 高清视频一区二区| 欧美在线看片a免费观看| 日韩欧美一卡二卡| 亚洲日本电影在线| 麻豆成人av在线| 色菇凉天天综合网| 2022国产精品视频| 亚洲免费av高清| 国产精品一区二区久久不卡| 91麻豆视频网站| 国产欧美综合在线观看第十页| 樱花影视一区二区| 成人免费va视频| 久久夜色精品国产噜噜av| 亚洲国产精品影院| 不卡电影免费在线播放一区| 91精品国产色综合久久久蜜香臀| 国产精品视频一二| 国产酒店精品激情| 日韩美女视频一区二区在线观看| 国产精品免费久久| 国产激情91久久精品导航| 日韩一卡二卡三卡| 午夜成人免费电影| 欧美三级在线播放| 亚洲一区二区视频在线| 日本韩国欧美在线| 亚洲一线二线三线视频| 色哟哟一区二区在线观看| 中文字幕人成不卡一区| 99久久夜色精品国产网站| 欧美国产精品一区| 91丨九色丨蝌蚪丨老版|