[Chromium中文文檔]Chrom{e,ium}{,OS}中的硬件視頻加速

Chrom{e,ium}{,OS}中的硬件視頻加速

轉載請註明出處:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/HW_Video_Acceleration_in_Chrom%7Beium%7D%7BOS%7D.html

全書地址

Chromium中文文檔 for https://www.chromium.org/developers/design-documents
持續更新ing,歡迎star
gitbook地址:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//
github地址: https://github.com/ahangchen/Chromium_doc_zh

Ami Fischman <[email protected]>

Status as of 2014/06/06: Up-to-date

(可以得到更多的細節)

介紹

視頻解碼(e.g. Youtube點播)和編碼(e.g. 視頻聊天應用)是現代網絡中最複雜的計算操作之一。將這些操作從運行在通常目的的CPU移動到指定的硬件塊意味着更低的電力消耗,更長的電池壽命,更高的質量(e.g. HD而非SD),更好的交互表現(因爲CPU可以被其他需要做的事情佔滿)。

設計

media::VideoDecodeAccelerator (VDA) 和 media::VideoEncodeAccelerator (VEA) (有他們對應的客戶端子類)是Chrome中所有視頻硬件加速的中心接口。每個硬件加速的消費者實現相關的客戶端接口,調用一個相關的V[DE]A對象。

通常這些類想要編碼或解碼存在於渲染器進程中的視頻(e.g.<video>播放器,或者WebRTC的視頻解編碼器),被使用的硬件在渲染器進程內是不可訪問的,所以IPC被用於連接渲染器<->GPU進程。

實現細節

加速API的主要使用者是:<video>管道(在web上展示媒體信息),WebRTC(使得web上脫離插件的實時視頻聊天變得可能),Pepper API(爲pepper插件比如Adobe Flash提供硬件加速)。

實現硬件加速API與操作系統相關(有時候也與硬件平臺相關),因爲操作系統和驅動/硬件表示層提供了極度不同的各種選項。

這裏寫圖片描述
(沒有畫出的部分: 過時的基於OpenMAX-IL的OVDA, 以及不會啓動的MacVDA).

當前狀態

新的設備層出不窮,所以這個列表很可能已經過時了,但在2014年六月上旬,已有的(公開)支持包括:

解碼
- Windows: 從Windows 7開始, h.264的硬件加速解碼被用於DXVAVDA.
- CrOS/Intel (一切過去的Mario/Alex/ZGB): h.264的硬件加速解碼被用於VAVDA
- CrOS/ARM: V4L2VDA可以使用h.264和VP8的硬件加速解碼
- Android: 在N10, N5,和一些S4, 以及一些其他設備上, VP8的硬件加速解碼可用。(注意在Android上這是用於WebRTC,因爲沒有PPAPI,並且<video>標籤使用平臺自己的播放器)

Encode
- CrOS/ARM: V4L2VEA可以使用h.264的硬件加速編碼(任何地方),以及VP8(2014年的設備)
- Android: N5上可以使用VP8硬件加速編碼

結果

一般來說,從CPU去掉編解碼,轉到指定的硬件上,根據平臺/工作負載等的不同,可以延長電池10%-25%的壽命。一些數據例子可以在這裏看:

公開: 133827#c27, 219957#c16

google內部: summary slide deck, CrOS/ARM-1, CrOS/ARM-2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章