青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 181  文章 - 15  trackbacks - 0
<2009年3月>
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

My Tech blog

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

一、 總覽:

Graph、Filter、Pin、Simple

Graph:可以理解為媒體處理的流程圖。

Filter:可以理解為媒體處理流程圖中的一個步驟。

Pin:可以理解為媒體處理各個步驟之間的數據流節點。

Simple:可以理解為各個形態的數據。

Filter的分類:

· source filter:將數據從源(比如媒體文件)引入Graph。

· transform filter:數據流入、改變、流出。

· Renderer filters:把最終結果展現給用戶。

· splitter filter:比如把一個媒體流分解為視頻和音頻。

· mux filter:和splitter filter相反。

1. Graph Manager

主要對處于同一個Graph的Filter(s)進行統一的管理。

比如:

· 各個Filter的狀態切換

· 建立同步時鐘

· 事件回發

· 創建

為什么要統一管理狀態切換?

因為處于同一Graph中的各個Filter的狀態切換往往需要遵循嚴格的先后順序。所以一般通過發送命令給Graph Manager的方式進行各Filter的狀態變更。

為什么要建立同步時鐘?

比如聲像需要同步。

2. Media Types

結構體AM_MEDIA_TYPE定義了媒體類型。

主要包含如下結構:

· Major type: 由一個GUID來表示。通常包含音視頻、未知流、MIDI等等。

· Subtype: 由一個GUID來表示。Major type為視頻,則子類型可以包括RGB-24, RGB-32, UYVY

· Format block: 說明圖形尺寸、幀率等信息。如果Major type為視頻,sub type為RGB-24,則Format block的信息會被自動辨識。

3. SampleAllocator

需要注意的是,各個filter之間并不直接傳送它們各自進行處理的數據的指針。它們通過一個暴露IMemAllocator接口的Com組件來分配內存。填充了數據的內存被封裝到Sample里面。各個Filter真正使用的是Sample。Sample通常包含:

· 內存指針

· 時間戳

· 標識

· 媒體類型(可選)

這里當一個Filter使用Sample的時候,它同時掌握這個Sample的引用計數,這樣就有效杜絕了資源爭用現象的發生。

4. Filter Graph中的硬件

硬件被封裝到Filter中,任何與硬件的交互都轉化為與Filter的交互。

二、 Graph-Building 組件

Filter Graph Manager.

Capture Graph Builder:設計的初衷是視頻捕獲,但是可以衍生很多用途。

Filter Mapper and System Device Enumerator:枚舉可用的filter.

DVD Graph Builder

Video Control

1. 智能拼接

1) 如果在Graph里面有一個沒有輸入的Filter,那么Graph在完成自己的時候,就會考慮這個Filter。如果有一個已有的Filter的流出恰好與這個沒有輸入的Filter的流入相匹配,則將這兩個Filter連接。

2) Graph在完成自己的過程中也會查找所有注冊過的Filter與當前非終點Filter的流出進行匹配。注冊的Filter會有一個權值,作為Graph進行連接嘗試的優先級依據。

步驟:

1) 使用IStreamBuilder(如果pin實現了這個接口,但大多數情況沒有)。(否則2)

2) 查找被緩存的Filter。(否則3)

3) 查找Graph現有的Filter。(否則4)

4) 查找所有注冊了的Filter。

2. 關鍵方法

IFilterGraph::ConnectDirect:直接連接兩個Filter,如不成功,返回失敗。

IGraphBuilder::Connect:連接兩個Filter,如果可能,直接連接,否則通過中間Filter(s)進行連接。

IGraphBuilder::Render:你自己建立了一系列從源開始的Filter,基于這些Filter(s)完成Graph。

IGraphBuilder::RenderFile:從一個文件開始完成Graph.

IFilterGraph::AddFilter:向Graph中添加一個Filter

通過這些方法,你可以:

1、 由Graph Manager建立整個Graph。(通過RenderFile)

2、 由Graph Manager建立部分Graph。(比如你想自己寫一個AVI文件,當然也可以通過Render來生成預覽)

3、 完全手動建立整個Graph。(需要自己AddFilter,還需要自己Connect)。

三、 Direct Show 數據流概述

1. 關鍵接口(方法)

IMediaSample:對Filter之間使用的內存的封裝。

IMemAllocator::GetBuffer:從allocator獲取Buffer(即ImediaSimple的實現對象)

摘要:

由于Render會按照時間戳來Render數據,所以它會一直占用它的上一級Filter流入的Simple,直到時間戳所標識的時間到達。所以當上一級Filter用完了allocator的Simple池中的Simple時,會阻塞而不處理,進而反向影響到更上一級的Filters,從而使它們變為等待的狀態。同時由于時間戳對于Render的時間上的要求,所有上級Render都必須在Simple的時間戳標識的時間到達之前處理完自己對于該Simple的動作。

2. Transport(傳送)

· Push Model(推送模型):上層filter(pin-out)將處理好的數據推送給下層filter(pin-in)。下層filter在需要數據的時候通過IMemInputPin::Receive來獲取數據。

· Pull Model(抓取模型):下層filter(pin-in)在需要數據的時候,通過IAsyncReader異步向上層filter請求數據。(通常用于視頻文件的回放)

3. Samples and Allocators

1) 引用計數

上層Filter(pin-out)通過IMemAllocator::GetBuffer向Allocator申請Simple,如果此時沒有Simple的引用計數為0,則說明Allocator的Simple池中沒有可用的Simple,則GetBuffer的調用會被阻塞。一旦Simple池中出現可用的Simple,則先前阻塞的GetBuffer放行,并獲取一個引用計數變為1的Simple。此Simple處理后,傳遞給下層Filter(pin-in),下層Filter如果在Receive方法中處理Simple,則它與上層Filter的處理處于同一線程中,Simple的引用計數不會變化,如果下層Filter需要通過創建線程異步使用上層推入的Simple進行處理,則該Simple的引用計數會加1,變為2.之后如果上層Filter的推送線程結束,則Simple的引用計數減1,變為1.

2) 提交和撤銷Allocator

IMemAllocator::Commit,在被調用之前,所有的GetBuffer無效,

調用IMemAllocator::Decommit之后,所有的GetBuffer調用無效.

4. Filter 狀態變化

Filter狀態的變化由Graph Manager進行控制。

所有的狀態變化都是自低(Render Filter)向上(Source Filter)進行的。比如暫停的時候,Render Filter會首先暫停,這時候Render之上的Filter中都會存有未能推送的Simple,此時相當于在各個Filter之前都堆積了一些等待處理的數據。沿著Render向上的Filter逐個暫停,直到Source。當狀態從暫停變化為開始的時候,Render會首先變化為開始狀態,處理在它之前堆積的數據,并釋放那些被占用的Simple。然后逐步向上直到Source,Source在能夠獲取Simple之后,數據繼續流入Graph,整個Graph進入開始狀態。

posted on 2008-02-22 22:10 littlegai 閱讀(1094) 評論(0)  編輯 收藏 引用 所屬分類: 我的讀書筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久精品国产清高在天天线| 一区二区久久| 国内精品免费午夜毛片| 亚洲美女区一区| 麻豆精品视频在线观看| 亚洲欧美精品伊人久久| 欧美日韩精品一区视频| 日韩视频不卡中文| 亚洲第一伊人| 亚洲资源在线观看| 国产精品不卡在线| 亚洲一区二区伦理| 一本久久a久久精品亚洲| 欧美日韩国产系列| 亚洲专区一区| 亚洲欧美国产va在线影院| 国产精品美女久久久免费| 亚洲欧美日韩综合一区| 亚洲一区二区三区在线观看视频| 国产精品v欧美精品v日本精品动漫 | 亚洲伦理在线免费看| 蜜臀久久久99精品久久久久久| 亚洲免费影院| 好看的日韩视频| 美日韩精品视频| 欧美成人一区二区三区在线观看| 亚洲精品四区| 国产精品99久久久久久久久久久久 | 欧美激情一区在线观看| 最新日韩中文字幕| 亚洲精品色婷婷福利天堂| 欧美性一二三区| 久久久精品欧美丰满| 久久这里有精品15一区二区三区| 亚洲区一区二| 亚洲一二三区精品| 伊人夜夜躁av伊人久久| 亚洲国产精品一区二区尤物区| 欧美日韩视频专区在线播放| 欧美伊人久久久久久午夜久久久久| 久久久精品国产一区二区三区 | 99re热这里只有精品视频| 欧美视频中文字幕在线| 久久国产精品网站| 免费日韩av片| 亚洲少妇一区| 欧美韩日一区二区| 欧美一区二区三区另类 | 激情自拍一区| 91久久精品美女高潮| 国产精品白丝jk黑袜喷水| 久久人人爽人人爽| 欧美欧美在线| 久久免费视频这里只有精品| 欧美精品色网| 狂野欧美激情性xxxx欧美| 欧美日韩免费一区二区三区视频| 久久久91精品国产一区二区三区| 久久综合久久美利坚合众国| 亚洲一区二区三区免费观看 | 亚洲另类自拍| 午夜精品一区二区三区在线视 | 国产日本欧美在线观看 | 欧美性猛交视频| 暖暖成人免费视频| 国产精品女人久久久久久| 亚洲第一中文字幕在线观看| 国产欧美精品在线| 亚洲精品美女91| 亚洲成色精品| 久久精品国产免费看久久精品| 亚洲综合三区| 欧美日韩理论| 亚洲精品国产日韩| 亚洲国产毛片完整版| 久久超碰97人人做人人爱| 午夜视频在线观看一区| 欧美日韩在线视频观看| 亚洲国语精品自产拍在线观看| 曰本成人黄色| 久久久久综合| 美腿丝袜亚洲色图| 韩日在线一区| 亚洲综合日本| 亚洲一区二区在线免费观看| 免费中文日韩| 欧美91视频| 黄色一区二区在线| 久久精品国产久精国产思思| 久久手机精品视频| 精品动漫3d一区二区三区| 久久久国际精品| 欧美sm重口味系列视频在线观看| 尤物精品在线| 欧美成人性生活| 亚洲精品视频在线播放| 99热免费精品在线观看| 欧美日韩免费观看一区三区| 一本久道综合久久精品| 亚洲免费视频中文字幕| 国产日本欧美视频| 久久婷婷色综合| 欧美好骚综合网| 一区二区激情视频| 国产伦精品一区二区三区四区免费| 亚洲欧美韩国| 中文一区字幕| 99国产精品99久久久久久粉嫩| 一本色道综合亚洲| 欧美日韩福利视频| 中日韩男男gay无套| 性久久久久久久| 国语自产精品视频在线看抢先版结局 | 久久精品欧洲| 欧美电影专区| 日韩一级黄色av| 国产精品黄视频| 香蕉成人伊视频在线观看| 欧美成人黑人xx视频免费观看| 夜夜爽av福利精品导航| 国产精品视频导航| 老司机午夜精品视频在线观看| 亚洲欧洲三级| 欧美在线一级视频| 亚洲黄色影院| 国产九色精品成人porny| 噜噜噜噜噜久久久久久91| 亚洲免费成人av电影| 久久久久久久久一区二区| 亚洲精品五月天| 国产伦精品一区二区三区高清版| 久久综合网色—综合色88| 这里是久久伊人| 女人香蕉久久**毛片精品| 亚洲婷婷免费| 亚洲欧洲美洲综合色网| 国产欧美日韩| 欧美三级第一页| 美女黄毛**国产精品啪啪| 亚洲专区一区| 99精品热视频| 亚洲国产一区二区三区a毛片| 久久精品国产99| 亚洲一区成人| 日韩视频中文字幕| 在线视频国产日韩| 国产午夜亚洲精品不卡| 国产精品v日韩精品| 欧美精品一区二| 猫咪成人在线观看| 久久九九久精品国产免费直播 | 欧美日韩免费高清| 久久精品麻豆| 亚洲欧美美女| 在线视频一区观看| 欧美成人午夜激情| 久久久xxx| 欧美影视一区| 欧美一区国产一区| 亚洲影院色无极综合| 99国产精品一区| 亚洲欧洲在线一区| 在线视频国产日韩| 在线观看精品视频| 伊人久久大香线| 激情国产一区| 激情另类综合| 国产午夜精品理论片a级探花| 国产精品极品美女粉嫩高清在线 | 亚洲国产天堂久久综合| 国产精品视频精品视频| 欧美午夜片在线观看| 欧美日韩视频在线一区二区 | 亚洲人成网站色ww在线| 激情亚洲网站| 亚洲高清电影| 伊人精品在线| 136国产福利精品导航| 影音先锋一区| 亚洲精品久久久久久一区二区| 亚洲国产视频一区二区| 亚洲美女在线看| 亚洲一区二区黄色| 性色一区二区| 久久一二三四| 欧美国产日韩在线| 亚洲欧洲一区二区在线观看| 亚洲毛片一区| 午夜激情综合网| 欧美影院在线| 欧美成人一区二区在线| 欧美精品国产精品日韩精品| 欧美日韩一区在线观看视频| 国产精品日本| 激情文学一区| 99伊人成综合| 久久久99精品免费观看不卡| 女女同性精品视频| 99精品久久久| 欧美亚洲视频在线观看|