• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            kenlistian

            厚積薄發(fā). 勤為槳,思為帆

               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
              73 隨筆 :: 4 文章 :: 22 評論 :: 0 Trackbacks

            對于pin的連接過程,總結下.

               1.
               應用程序通過調用filter graph 管理器方法來連接filter.
               應用程序調用IFilterGraph::ConnectDirect
                           IGraphBuilder::Connect來指定不同的filter直接連接,
                          也可用IGraphBuilder::RenderFile自動實現(xiàn)連接
               應用程序可以通過IFilterGraph::AddFilter將filter 添加graph中,
               當一個filter被添加到graph中時,filter圖表管理器通過IBaseFilter::JoinFilterGraph來通知filter.

               這點說明, 不是filter的直接連接函數(shù)相互鏈接,而是在以上內部調用實現(xiàn)的.

               2. 考慮到以前描述
                          FilterA ---->FilterB
                  的連接檢查媒體類型 邏輯基本就是這樣:

             循環(huán)FilterA的輸出pin,再循環(huán)FilterB的輸入Pin媒體類型是否和pmt媒體類型
             匹配

             for (j = 0 ; j<FilterB.PinIn.MediaTypeCount; j++)
             {
                         if (FilterB.PinIn.MediaType[j] = pmt )
                  {
                        if(FilterA.PinIn.ReceiveConnection(FilterA.PinOut, FilterB.MediaType[i]) = OK)
                               return TRUE;
                  }

                    }

                    for (i= 0; i< FilterA.PinOut.MediaTypeCount; i++)
             {
                  if (FilterA.PinOut.MediaType[i] 是否在FilterB.PinIn中是否支持)
                    if (FilterA.PinIn.ReceiveConnection(FilterA.PinOut, FilterA.MediaType[i]) = OK)
                         return TRUE;
             }

              在實現(xiàn)上,調用次序以下過程:


            filterGraph首先調用FilterA.PinOut::Connect().

            FilterA.IPinOut::Connect()
                   原型:IPin::Connect(IPin* pReceivePin, const AM_MEDIA_TYPE * pmt)     
                   該Connect參數(shù)為
                        pReceivePin 為 FilterB的輸入Pin,
                        pmt         是FilterA的當前媒體類型.
             


                  在內部調用(主要)
                     hr = AgreeMediaType(pReceivePin, pmt);
                         檢查pReceivePin 有否pmt的媒體類型.

              有,則自然ok
              沒有,失敗,退出該函數(shù).
                     則在AgreeMediaType做了以上邏輯循環(huán).

              
               IPin::AgreeMediaType函數(shù)處理如下:
             
                  1.判斷pmt 是否是完全媒體類型,是則按全媒體類型模式出來
                  2.非完全媒體類型
                 IPin::EnumMediaTypes(IEnumMediaTypes** pEnum)
                  獲取枚舉指針(指向Pin中的媒體類型集合).
               
                       先枚舉filterB的輸入Pin的媒體類型的枚舉集,
                     調用TryMediaTypes 函數(shù)去判斷是否匹配.
                還不匹配,取出FilterA的枚舉類指針.再調用TryMediaTyes
                

                IPin::TryMediaType()處理
                原型:
               HRESULT CBasePin::TryMediaTypes(IPin*pReceivePin, const CMediaType*pmt,
                     IEnumMediaType *pEnum)

                在該函數(shù)處理:
                     for (pmt in 所有該枚舉集中的枚舉媒體類型 )
              {
                 AttemptConnect(pReceivePin, pmt)
              }


                在AttemptConnection中調用
                CBasePin::AttemptConnection(IPin* pReceivePin, const CMediaType*pmt)
               
                  檢查FilterA 的CheckConnect(pReceivePin)
                  FilterA的PInOut::CheckMediaType(pmt)
                       ok,return
                  FilterA的PinOut::SetMediaType(pmt)
                   
                  pReceivePin->ReceiveConnection(...)  (filterB 的PinIn)
                       ok,return
                  FilterA的PinOut::CompleteConnect(pReceivePin)

            posted on 2009-03-09 22:36 kenlistian 閱讀(704) 評論(0)  編輯 收藏 引用 所屬分類: directx
            国产成人精品久久免费动漫 | 色婷婷综合久久久中文字幕| 久久91精品国产91久| 久久精品国产免费观看三人同眠| 国产V亚洲V天堂无码久久久| 精品多毛少妇人妻AV免费久久| 亚洲а∨天堂久久精品9966| 丰满少妇高潮惨叫久久久| 久久这里只有精品视频99| 亚洲午夜无码久久久久| 91久久精品国产免费直播| 亚洲中文字幕无码久久2020 | 久久99精品国产麻豆宅宅| 久久国产高清一区二区三区| 性欧美大战久久久久久久久| 久久97久久97精品免视看秋霞 | 久久成人国产精品| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | a高清免费毛片久久| 亚洲一区精品伊人久久伊人 | 久久综合五月丁香久久激情| 韩国免费A级毛片久久| 一97日本道伊人久久综合影院| 99久久免费国产精品热| 国产69精品久久久久久人妻精品| 婷婷综合久久狠狠色99h| 国产成人久久AV免费| 色综合久久久久久久久五月 | 亚洲国产精品久久66| 久久精品欧美日韩精品| 97精品伊人久久久大香线蕉| 青青热久久国产久精品 | 久久综合五月丁香久久激情| 久久国产美女免费观看精品| 一本大道加勒比久久综合| 国产日产久久高清欧美一区| 久久国产乱子精品免费女| 精品国产一区二区三区久久| 久久精品国产亚洲综合色| 久久精品一区二区三区不卡| 久久国产精品-国产精品|