解碼器,分離器以及DXVA的概念
我們介紹一下解碼器,分離器以及DXVA的概念
解碼器的功能就是對(duì)視頻或者音頻進(jìn)行解壓縮。我們知道不論是原始的視頻或者是原始的音頻,數(shù)據(jù)都是十分驚人和龐大的,所以我們要用編碼器對(duì)其進(jìn)行壓縮,這樣才有利于傳輸和存儲(chǔ)。在播放時(shí)我們就要需要還原成畫面或者聲音,這就需要解壓,也就是解碼。其中視頻解碼器比較復(fù)雜:
視頻壓縮技術(shù)就像我們之前所說有很多種,每一種里又有不少官方的,第三方的解碼器,各種解碼器功能,畫面,速度都有差異,不過一般分為兩種解碼器:硬件解碼器和軟件解碼器。
硬件解碼器就是利用解碼器所帶的驅(qū)動(dòng)接口和硬件本身連接上,利用硬件所帶的功能對(duì)視頻進(jìn)行解碼,這樣可以降低對(duì)CPU的負(fù)荷,從而實(shí)現(xiàn)流暢播放以及提升CPU多任務(wù)的能力。
軟件解碼器就是除了硬件解碼器之外的所有解碼器,其最大特征就是利用CPU通用處理的功能,對(duì)其進(jìn)行軟件解碼。軟件解碼雖然耗費(fèi)CPU,但是可以修改,升級(jí),在CPU資源充足的情況下是最好的選擇。
分離器的功能就是把封裝在一起的視頻以及音頻還原出來。之前我們談過有不少的封裝,每一種封裝必須對(duì)應(yīng)一種分離器,才能正確的把視頻和音頻分離出來以供解碼器解碼。
分離器也有很多種,一般情況下非標(biāo)準(zhǔn)的封裝格式在正規(guī)的播放器里都沒有相應(yīng)的分離器,比如MKV。而分離器比較出名的有月光分離器,haali等。
DXVA(也稱DirectX VA)全稱就是DirectX Video Acceleration(硬件視頻加速接口)。
DXVA是一個(gè)由微軟和圖形芯片廠商聯(lián)合定義的一個(gè)硬件接口規(guī)范。如果一種顯卡芯片在硬件上支持DXVA規(guī)范,并不代表它就實(shí)現(xiàn)了DXVA里面定義的所有功能。不過有一點(diǎn)可以肯定的是:對(duì)于DXVA定義的每一項(xiàng)功能,符合DXVA規(guī)范的顯示芯片驅(qū)動(dòng)程序一定會(huì)告訴系統(tǒng),這項(xiàng)功能在它的硬件里實(shí)現(xiàn)了還是沒有實(shí)現(xiàn)——這是DXVA規(guī)范強(qiáng)制性要求的。這樣做的好處是應(yīng)用程序不需要自己花費(fèi)時(shí)間和精力去測(cè)試顯卡有沒有實(shí)現(xiàn)某項(xiàng)功能。
同樣的,如果一種解碼器支持DXVA規(guī)范,也不代表它就能利用DXVA規(guī)范里面所有的功能組合,它可以選擇自己有能力支持的,或者想要支持的那些功能的組合,而其他功能組合也許就放棄了。
此外,如果某種顯示芯片雖然通過驅(qū)動(dòng)表示支持某種功能,但解碼器認(rèn)為該芯片對(duì)這個(gè)功能的支持是不穩(wěn)定的,容易導(dǎo)致系統(tǒng)崩潰或錯(cuò)誤,那么解碼器也可以放棄使用該芯片的這種功能。
按照DXVA規(guī)范,硬件解碼加速有3種級(jí)別
1、MC加速(運(yùn)動(dòng)補(bǔ)償,也就前文提到Pixel Prediction)
2、IDCT加速(前文提到的Frequency Transform) + MC加速
3、VLD加速(前文提到的熵解碼) + IDCT加速 + MC加速+(deblocking fliter環(huán)內(nèi)解塊濾波)
除了比較老的顯卡(例如Geforce3)才支持MC加速之外,現(xiàn)在GF6/7,X1000系列第二級(jí),而GF 8600/8500支持H.264第三級(jí)加速,以及HD2000系列支持VC-1/H.264第三級(jí)加速,當(dāng)然,這也需要解碼器支持才能被調(diào)用。
當(dāng)播放器或者解碼器顯示DXVA(也稱DirectX VA)時(shí)也代表著硬件加速已經(jīng)被開啟。