Ami Fischman <fischman@chromium.org>
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年六月上旬,已有的(公开)支持包括:
解码
Encode
一般来说,从CPU去掉编解码,转到指定的硬件上,根据平台/工作负载等的不同,可以延长电池10%-25%的寿命。一些数据例子可以在这里看:
公开: 133827#c27, 219957#c16
google内部: summary slide deck, CrOS/ARM-1, CrOS/ARM-2