視頻硬解api介紹

  在一個gpu如此強大的時代,視頻解碼怎麼能少了gpu廠商的參加。爲了用硬件加速視頻解碼,廠商定義了一些api。html

  好吧,一旦和硬件打交道,就會有os的參加,有了硬件與os參加,api確定會變成很凌亂,看了一點代碼,一些wiki,一些文檔,寫個總結,但願真正的專家斧正一下。linux

 

windows平臺:android

  微軟一家說了算,硬件都是小弟。因此api沒那麼凌亂。就一種程序員

  DXVA(directx video acceleration),兩個版本,1.0和2.0.windows

linux平臺:後端

  什麼事到了linux這,都異常讓人鬱悶。api

  號稱給你不少選擇,最自由的選擇,若是都不滿意,還能夠本身定義一套。app

  其實呢?我根本不須要那麼多選擇,我只須要一個容易用的,好用的,穩定的而已。我只是一個普通的程序員,沒有站到時代前沿,就想快速開發。框架

 

  顯卡有三你們,intel,amd,nvdia,天然硬解api也就有三套。ide

  intel的:va api (video acceleration api),自我號稱爲linux標準。freedesktop也用的這套標準。

  nv的:   vdpau (video decode and presentation api for unix),nv的定義的api。

  amd的: Xvba (x-video bitstream acceleration api)),amd定義的api。

    其實開源界若是隻有三套,其實也還算好吧。可是很讓人惱火的就是。當你的硬件平臺是nv時,你發現你的想用的軟件只支持va api,腫麼辦?那。。。模擬吧。。因而就有了vdpau for va api。xvba fo va api。

   從這個角度講,也還算能夠,至少你們在名義上讓intel當了老大。你們都在後端用本身的代碼模擬實現intel的api。不過事實上,還有 va api for vdpau這種東西。。。我凌亂了。。你看明白了麼?

 ps:

  實際上,硬件廠商參與完以後,x組織也沒忘記插一腳。有個標準XvMC(X-Video Motion Compensation)標準,ffmpeg中有支持,不過籤於x組織的弱勢,這套api支持很差。其餘的va api與vdpau,ffmpeg也加入了支持,不知道爲何xvba沒有支持,難道amd已經窮到沒人提交patch給開源社區了?

再ps:

   最近看了ffmpeg 的patch list,發現1.0時,有人提交xvba的patch,可是沒有被合併到主分支上來,看來還須要一段時間ffmpeg才能直接開啓amd顯卡的硬解。

  http://developer.amd.com/tools-and-sdks/open-source/

  sdk請戳上面的連接。

android平臺:

  google一家,別無分號,雖然號稱你能夠本身幹掉libstagefright這個框架,本身實現一套。不過有這樣技術實力的公司,一般不去幹破壞標準的事。  

  因而也簡單了,openmax。

  嵌入式平臺嘛,遠遠比pc世界的廠商多,複雜的多,標準必定要十分十分抽象,乾脆什麼都沒有,只有一個狀態機。

  因此標準變得十分簡化。

      不過這樣對硬件廠商就方便多了,你們本身只要能搞出openmax定義的組件就行了。

mac 

  實際上若是操做系統廠商比較封閉一點,世界可能會更好。好比mac os,上面說了linux上視頻加速接口的混亂,來自freebsd的mac os又好了不少。

  只有一套api,叫vda(Video Decode Acceleration Framework),詳細請戳

  https://developer.apple.com/library/mac/technotes/tn2267/_index.html

  https://lists.libav.org/pipermail/libav-api/2011-November/000314.html

相關文章
相關標籤/搜索