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

转载于:https://www.cnblogs.com/hellocwh/p/5289544.html

【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. 方法对象java final关键字的用法
  2. 计算机二级c语言考生文件夹在哪,2017年全国计算机二级C语言考试题
  3. python 定义数字_Python:已定义数字列表的差异
  4. enum 有什么好处_林卡尔|先买地板后装修的三大好处
  5. WinForm 对EXCEL 的操作(三)
  6. C++ 信号处理 signal(SIGINT, signalHandler);
  7. 第十四天linux扩展知识点
  8. 《深入理解计算机系统》勘误建议
  9. 泰勒·斯威夫特(Taylor Swift)最好听歌曲专辑,喜欢的可以下载保存
  10. 服务器安装系统h730,戴尔H330_H730阵列卡驱动
  11. react函数式组件传值之子传父
  12. ECS架构 Entitas-CSharp学习之路(二)
  13. HTML+CSS练习——实现京东登录静态页面
  14. 国外 android 手机,Android手机浏览器(国外篇)横向对比评测
  15. wheeltec移植到ubuntu18.04
  16. C#后台画图保存为ipg/png的文件
  17. 怎么写文案卖点?三个步骤就够了
  18. vue项目云e办——登录页面(一)
  19. 进度条(报名,活动进度条)
  20. WebStorm调试javaScript

热门文章

  1. Forrester:AI 科技与商业严重脱节,系统优化才是企业 AI 应用之道
  2. oracle drop ship,PO:Drop Shipment Process
  3. oracle数据库学习(自用)
  4. PIX515升级IOS
  5. 如何用微信下载APP
  6. 【第170期】给@Steve的简历分析:不自卑,但我确实在仰望
  7. 管理经验(一)——如何当好一个管理者
  8. 数据从业者的一次“典型”面试
  9. 通达oa mysql_通达OA系统优化-对mysql数据库减肥
  10. python线程同步condition_042孤荷凌寒自学python线程同步之Condition对象