[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 <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}中的硬件视频加速相关推荐
- 【Chromium中文文档】Chrom{e,ium}{,OS}中的硬件视频加速
Chrom{e,ium}{,OS}中的硬件视频加速 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_ ...
- python pptx库中文文档_基于python-pptx库中文文档及使用详解
个人使用样例及部分翻译自官方文档,并详细介绍chart的使用 一:基础应用 1.创建pptx文档类并插入一页幻灯片 from pptx import Presentation prs = Presen ...
- hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)
其他语言接口 Font Tian translated this article on 23 December 2017 两种接口策略 基本上有两种方法将 hyperopt 与其他语言进行连接: 你可 ...
- 【BULL中文文档】用于在 NodeJS 中处理分布式作业和消息的队列包
本文英文链接:https://github.com/OptimalBits/bull/tree/develop/docs 译文:嗨Sirius 什么是 Bull? Bull 是一个 Node 库,它基 ...
- Hyperopt官方中文文档导读
在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物.圣诞快乐,各位. 更新 Hyperopt官方文 ...
- Hyperopt中文文档导读
在2017年的圣诞节前,我翻译了有关HyperOpt的中文文档,这也时填补了空白,以此作为献给所有中国程序员,以及所有其他机器学习相关行业人员的圣诞礼物.圣诞快乐,各位. HyperOpt中文文档导读 ...
- Greenplum 6.9 资源组中文文档
本文更新版本:http://www.200yi.com/ff_internal/wiki.php?id=wiki:Database:Greenplum:资源管理:Greenplum%206.9%20资 ...
- lavaral中文手册_Laravel-mix 中文文档
概览 基本示例 larave-mix 是位于webpack顶层的一个简洁的配置层,在 80% 的情况下使用 laravel mix 会使操作变的非常简单.尽管 webpack 非常的强大,但大部分人都 ...
- pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项
Pyppeteer中文文档_序言_安装_基本使用及注意事项 Pyppeteer是Puppeteer Javascript(无头) chrome/chromium 浏览器自动化库的Python非官方端口 ...
最新文章
- 计算机视觉系列最新论文(附简介)
- [Python]小百合十大爬虫
- Visual Studio 2015 for Linux更好地支持Linux下的开发
- 用什么写php最好用,php用什么开发工具比较好
- 汇编语言——第1次上机实验
- Ubuntu16.04实现Sphinx离线语音识别
- Python多线程小例子
- flutter 使用阿里图标
- comsol matlab script,comsol script
- Java流处理之转换编码的转换流
- Python图像处理库PIL的基本概念介绍
- Codeforces 918D MADMAX 图上dp 组合游戏
- ewebeditor php漏洞,eWebeditor 3.8 for php任意文件上传漏洞 附exp
- C语言及实验作业,C语言作业及参考答案
- sipp脚本撰写(二)
- 三防平板终端丨三防平板电脑丨三防平板如何应用在工业中?
- python之动态性
- 装配一台计算机有哪些安全注意事项,挤出机注意事项
- Async 异步转同步
- 关于bitset中的 to_ulong()的解答
热门文章
- python3 setup.py install_安装Twisted执行python3 setup.py install报错
- eclipse和vs2010 (visual studio)和BBEdit自动排版快捷键(auto format shortcuts)
- linux 下strip工具,linux下使用strip如何对库和可执行文件进行裁减
- Android 开发中的日常积累
- STM32——NFC门禁模块(RC522)
- 开源php商城系统选择
- php开发多用户商城用什么技术,php多用户商城系统有什么特点?
- ubuntu 桌面环境出现异常常用的解决方法
- 计算机科学与技术qs排名,全球QS专业排名(计算机科学与信息技术)
- java获取拼音_java获取中文拼音