DirectShow的設計是為了解決多媒體(Multimedia)的開發困境,因為要在Windows上開發多媒體應用遇到的挑戰有:
- 多媒體的資料是大量的串流形式,而且必須快速的處理(process)。
- 聲音(Audio)和影像(Video)必須同步(synchronize)處理,意思是開始與停止都必須一致且同樣的速率進行。
- 資料來源(Source)具有多樣性,來源可以是本機磁碟機、網路、電視廣播或是視訊攝影機。
- 資料格式(Format)是多變不定的規格,例如Audio-Video Interleaved (AVI)、Advanced Streaming Format (ASF)、Motion Picture Experts Group (MPEG)或Digital Video (DV)等等。
- 程式設計人員不會事先知道使用者端的硬體系統規格。
先看DirectShow的架構圖,諺語(adage)說A picture is worth a thousand words。
DirectShow的架構設計上使我們的應用程式(Application)和底層「複雜的資料、硬體差異和影音同步」隔離(加了一層),而為了解決底層的多樣性,DirectShow採用模組化架構的元件(稱為Filter,本身是COM 元件,為什麼叫做Filter?)。Filter元件對底層支援Windows Driver Model (WDM)的裝置,另外,也支援Video for Windows (VfW) 、Audio Compression Manager (ACM)和Video Compression Manager (VCM)的遺留元件,當然,程式開發人員也可以開發自己的Filter元件。
DirectShow利用DirectDraw有效率的呈獻(render)影像,聲音則是利用DirectSound播放。同步的問題則是利用時間戳記(time-stamped)取樣的方式解決,DirectShow在多媒體資料上加入時間資訊(聰明的方法)。
整個DirectShow的如架構圖所示,可以清楚看到Filter、Filter Graph和Filter Graph Manager的關係,Application只須和Filter Graph Manager溝通而簡化開發的困難度。
參考資料:http://msdn.microsoft.com/en-us/library/dd375470(VS.85).aspx
DirectShow的架構設計上使我們的應用程式(Application)和底層「複雜的資料、硬體差異和影音同步」隔離(加了一層),而為了解決底層的多樣性,DirectShow採用模組化架構的元件(稱為Filter,本身是COM 元件,為什麼叫做Filter?)。Filter元件對底層支援Windows Driver Model (WDM)的裝置,另外,也支援Video for Windows (VfW) 、Audio Compression Manager (ACM)和Video Compression Manager (VCM)的遺留元件,當然,程式開發人員也可以開發自己的Filter元件。
DirectShow利用DirectDraw有效率的呈獻(render)影像,聲音則是利用DirectSound播放。同步的問題則是利用時間戳記(time-stamped)取樣的方式解決,DirectShow在多媒體資料上加入時間資訊(聰明的方法)。
整個DirectShow的如架構圖所示,可以清楚看到Filter、Filter Graph和Filter Graph Manager的關係,Application只須和Filter Graph Manager溝通而簡化開發的困難度。
參考資料:http://msdn.microsoft.com/en-us/library/dd375470(VS.85).aspx
沒有留言:
張貼留言