網頁

搜尋此網誌

2010年5月14日 星期五

Knowing DirectShow

在仔細研究DirectShow之後,總是會圍繞三個主題,我們再次整理這些觀念。看看這張圖會更清楚:(http://msdn.microsoft.com/en-us/library/dd390352%28v=VS.85%29.aspx)
Typical DirectShow application


Filter
Filter是DirectShow中最基本的處理單位,具備IBaseFilter介面,Filter具有三種狀態,分別是RunningStoppedPaused狀態,而Filter的輸出入端點稱為Pin,Filter利用Pin使資料從一個Filter傳送至另一個Filter,Pin具備IPin介面。

Filter的分類可以分成下列幾種(不是絕對區分,一個Filter可能同時具有兩類特性):
  • Source:提供資料輸入至DirectShow中,位於DirectShow的起始端,例如網路、攝影機或檔案等。
  • Transform:處理資料的用途,例如編碼器(Encoder)和解碼器(Decoder)。
  • Renderer:輸出資料,位於DirectShow結束端,例如螢幕、喇叭或檔案等。
  • Splitter:資料分離器,具「單端輸入,多端輸出」的性質,例如將一個影音檔分離成Video和Audio兩個輸出。
  • Mux:資料多工器(Multiplexer),具「多端輸入,單端輸出」的性質,例如將兩個Video和Audio合成為單一影音檔案儲存。
Filter Graph
Filter Graph也可簡稱Graph,是DirectShow中為了說明一群Filter的一個專有名詞。這樣解釋好了,我們利用DirectShow完成一項目的必須串接組合多個Filter元件,這整個組合就是一個Filter Graph,觀念就是這樣簡單。

Filter Graph Manager
Filter Graph Manager是管理Filter Graph的COM元件,主要有下列功能:
  • 改變Filter狀態:Filter的狀態改變必須依照特定順序,這由Filter Graph Manager統一管理,簡化Application對狀態的控制。
  • 提供參考時脈(Reference Clock):Reference Clock可以確保所有的Filter是同步運作,另外資料輸出的時間則稱為Presentation Time
  • 通知事件:傳遞事件給Application,這個機制有點像是Windows的訊息迴圈(Message Loop)。
  • 操作Graph Filter的方法:可以動態新增或刪除Filter,也可以更改Filter的串接方式。
DirectShow的觀念大致上是這些,不過DirectShow的資料說明真的很多,還要繼續努力研究!

DirectShow Reference:
http://msdn.microsoft.com/en-us/library/dd375467%28v=VS.85%29.aspx

沒有留言:

張貼留言

熱門文章