3. 關於DirectShow
3.1. DirectShow體系概述
多媒體的難題
處理多媒體有幾個主要的難題:
*多媒體流包含了巨大的數據量,而這些數據都必須非常快地被處理
*音頻和視頻必須同步,因此它們必須在同一時間開始或停止,並以同一速率播放
*數據可能來自很多的源,如本地文件、網絡、電視廣播和視頻攝像機
*數據有各種各樣的格式,如AVI、ASF、MPEG和DV
*程序員無法預知最終用戶使用什麼樣的硬件設備
DirectShow的解決方案
DirectShow被設計成用來解決所有這些難題,它主要的設計目的就是通過將複雜的數據轉輸、硬件的多樣性和同步問題從應用程序中獨立出來,從而簡化在windows平臺上數字媒體應用程序的開發任務。
要實現數據高效地被處理,需要流化音視頻數據,而DirectShow會儘可能地使用DirectDraw和DirectSound,從而高效地將數據送到用戶的聲音和圖形設備中進行播放。同步則是通過在媒體數據中加入時間戳來實現。而DirectShow模塊化的架構,使其可以輕鬆操縱變化多端的源、格式和硬件設備,在這樣的架構裏,應用程序只需組合和匹配多個filter來實現功能。
DirectShow提供的filter支持基於WDM的採集和調諧設備,也支持早先的VFW採集卡和爲ACM和VCM接口編寫的編碼器。
下圖顯示了應用程序、DirectShow組件和DirectShow支持的硬件和軟件組件之間的關係:
如圖,DirectShow將應用程序與衆多複雜的設備隔離開來,通信和控制這些設備均出DirectShow的filter來完成。DirectShow同樣爲某種文件格式提供與之對應的編解碼器。