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 <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年六月上旬,已有的(公开)支持包括:

解码
- 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

[Chromium中文文档]Chrom{e,ium}{,OS}中的硬件视频加速相关推荐

  1. 【Chromium中文文档】Chrom{e,ium}{,OS}中的硬件视频加速

    Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...

  2. python pptx库中文文档_基于python-pptx库中文文档及使用详解

    个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...

  3. hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)

    其他语言接口 Font Tian translated this article on 23 December 2017 两种接口策略 基本上有两种方法将 hyperopt 与其他语言进行连接: 你可 ...

  4. 【BULL中文文档】用于在 NodeJS 中处理分布式作业和消息的队列包

    本文英文链接:https://github.com/OptimalBits/bull/tree/develop/docs 译文:嗨Sirius 什么是 Bull? Bull 是一个 Node 库,它基 ...

  5. Hyperopt官方中文文档导读

    在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物.圣诞快乐,各位. 更新 Hyperopt官方文 ...

  6. Hyperopt中文文档导读

    在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物.圣诞快乐,各位. HyperOpt中文文档导读 ...

  7. Greenplum 6.9 资源组中文文档

    本文更新版本:http://www.200yi.com/ff_internal/wiki.php?id=wiki:Database:Greenplum:资源管理:Greenplum%206.9%20资 ...

  8. lavaral中文手册_Laravel-mix 中文文档

    概览 基本示例 larave-mix 是位于webpack顶层的一个简洁的配置层,在 80% 的情况下使用 laravel mix 会使操作变的非常简单.尽管 webpack 非常的强大,但大部分人都 ...

  9. pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项

    Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...

最新文章

  1. 计算机视觉系列最新论文(附简介)
  2. [Python]小百合十大爬虫
  3. Visual Studio 2015 for Linux更好地支持Linux下的开发
  4. 用什么写php最好用,php用什么开发工具比较好
  5. 汇编语言——第1次上机实验
  6. Ubuntu16.04实现Sphinx离线语音识别
  7. Python多线程小例子
  8. flutter 使用阿里图标
  9. comsol matlab script,comsol script
  10. Java流处理之转换编码的转换流
  11. Python图像处理库PIL的基本概念介绍
  12. Codeforces 918D MADMAX 图上dp 组合游戏
  13. ewebeditor php漏洞,eWebeditor 3.8 for php任意文件上传漏洞 附exp
  14. C语言及实验作业,C语言作业及参考答案
  15. sipp脚本撰写(二)
  16. 三防平板终端丨三防平板电脑丨三防平板如何应用在工业中?
  17. python之动态性
  18. 装配一台计算机有哪些安全注意事项,挤出机注意事项
  19. Async 异步转同步
  20. 关于bitset中的 to_ulong()的解答

热门文章

  1. python3 setup.py install_安装Twisted执行python3 setup.py install报错
  2. eclipse和vs2010 (visual studio)和BBEdit自动排版快捷键(auto format shortcuts)
  3. linux 下strip工具,linux下使用strip如何对库和可执行文件进行裁减
  4. Android 开发中的日常积累
  5. STM32——NFC门禁模块(RC522)
  6. 开源php商城系统选择
  7. php开发多用户商城用什么技术,php多用户商城系统有什么特点?
  8. ubuntu 桌面环境出现异常常用的解决方法
  9. 计算机科学与技术qs排名,全球QS专业排名(计算机科学与信息技术)
  10. java获取拼音_java获取中文拼音