Dav1d移动端解码高清视频达30FPS

Stella981
• 阅读 777

LiveVideoStack  招募

LiveVideoStack正在招募编辑/记者/运营,与全球顶尖多媒及技术专家和LiveVideoStack年轻的伙伴一起,推动多媒体技术生态发展。了解岗位信息请在BOSS直聘上搜索“LiveVideoStack”,或通过微信“Tony_Bao_”与主编包研交流。

开源AV1解码器Dav1d 0.3.0版性能进一步提升,在SSSE3指令集上快24%、在SSE4.1上为26%、在AVX2(所有PC)上为4%,在ARM64上快12%。目前已知使用的解码器 VLC media player 3.0.6 应该还是相对较旧的版本,未来最新的4.0会采用最新解码库。但MPC-BE(beta)和PotPlayer最新版本已更新0.2.x以上的解码库。

文:Ewout ter Hoeven

翻译:蒋默邱泽

原文:

https://medium.com/@ewoutterhoeven/dav1d-0-3-0-sailfish-armed-to-the-teeth-af5bbf845a16

开源AV1解码器Dav1d近日更新版本0.3.0,在发布的第三个版本中,新的汇编代码在PC和移动平台上都提供了一些重要的性能提升。(访问这里了解详细的测试数据https://docs.google.com/spreadsheets/d/1kokRutDAZmIMHa7EHxMNefhezDVozkcHwXIK\_7X6g1w/edit#gid=1963224812)

Dav1d移动端解码高清视频达30FPS

个人电脑

在x86方面,此版本主要改进了Dav1d的SSSE3性能。Jiang Xuefeng对亮度和Paeth帧内预测函数的色度预测做出了贡献,分别提高了0.8%和0.4%的全局性能。

Liwei Wang继续他的逆变换工作,针对更大的8x32,32x16和32x32以及高达64x64的块,提供了这个版本的最大速度优化,在一些视频上超过10%。

Dav1d 0.3.0还新增了第一个SSE4.1程序集。在大多数情况下添加的SSE4.1指令除了SSSE3之外没有太多利用上,但Victorien Le Couviour - Tuffet近一个月还在优化SSE4。他对CDEF约束方向增强滤波器滤波器进行了优化,使模块级别的速度提高了115倍,整体提升了1.5%。

与此同时,Henrik Gramner编写了一些非常聪明的SSE2代码来加速熵解码/码流读取,刚开始会占用大部分解码时间,尤其是在AVX2指令上。汇编代码为所有64位x86平台带来了加速,AVX2约为4%、SSSE3和SSE4.1约提升2%。

Dav1d移动端解码高清视频达30FPS

Dav1d移动端解码高清视频达30FPS

总的来看,这些测试使得SSSE3上的Dav1d 0.3.0快24%,SSE4.1快26%,AVX2 CPU快4%。

Dav1d移动端解码高清视频达30FPS

虽然单线程aomdec仍然非常强大,但是多线程Dav1d 0.3.0使libaom在下面对比图中的位置更微小。

Dav1d移动端解码高清视频达30FPS

Dav1d移动端解码高清视频达30FPS

Arm64

MartinStorsjö提供了两个非常好的提交,使用NEON汇编代码加速了loopfilter(NEON环路过滤器)和自导环路恢复。这两项功能都加速了大约3倍,使性能提升了7%到36%。不仅可以实现更高的分辨率、帧率和码率,还可以降低相同画面内容的硬件功耗。

在高通骁龙835上单核解码1080p视频突破25FPS,使用多个线程稳定30 FPS,某些内容甚至达到60FPS。

Dav1d移动端解码高清视频达30FPS

Dav1d移动端解码高清视频达30FPS

总结以上结果,我们看到《RED》的测试结果提升明显,因为它很大程度上依赖于loopfilter。单线程增益介于11%和36%之间(平均19%),多线程介于7%和16%之间。

Dav1d移动端解码高清视频达30FPS

应用现状

Dav1d的应用进行得非常顺利,重大新闻是Chrome浏览器和新的Microsoft Edge背后的开源项目Chromium现在也用了Dav1d,默认情况下将在Chrome 74中集成。

Firefox 67也在最新版本里使用了Dav1d,Dav1d已更新为0.2.1并使用了多线程。 除了Windows之外,默认情况下还在Linux和macOS上启用Dav1d解码。

FFmpeg和 VLC 自然也使用了Dav1d,一旦FFmpeg 4.2发布,Handbrake,自然也会考虑集成Dav1d。

Youtube越来越多的使用AV1编码,他们甚至编码了一些4K和8K分辨率高达60fps的视频,在这里了解如何让Youtube启用AV1。(https://www.youtube.com/testtube)

参考:

https://code.videolan.org/videolan/dav1d

https://code.videolan.org/videolan/dav1d/blob/master/NEWS

https://www.videohelp.com/software/PotPlayer

https://www.videohelp.com/software/MPC-BE

http://lazybing.github.io/blog/2019/01/28/av1-cdef-filter/

https://aomediacodec.github.io/av1-spec/av1-spec.pdf

Dav1d移动端解码高清视频达30FPS

LiveVideoStackCon 2019北京正在招募讲师,无论你是技术派还是学术派,亦或是行业专家,无论你的团队有多小、有多新,都可以来申请LiveVideoStackCon的讲师或出品人。

点击【阅读原文】了解更多大会相关信息。

本文分享自微信公众号 - LiveVideoStack(livevideostack)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
LiveVideoStack线上分享第三季(十四):FLV封装格式介绍及解析
随着流媒体的高速发展,FLV成为了最主流的视频流传输封装格式,但是作为占市场较大份额的Web端的实际应用中,各大浏览器却没有对FLV解码做完善的支持。8月17日20:00,LiveVideoStack线上分享第三季,第十四期,高顿网校平台开发部流媒体工程师戴兵将对比FLV实际文件带大家详细了解一下它的具体格式标准。!(h
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
3年前
LiveVideoStack线上交流分享 (九) —— B站的QUIC实践简介
为了给大家提供一个学习,交流的平台,畅聊音视频技术开发新趋势,新实践。我们推出了LiveVideoStack线上交流分享活动,在每周四晚19:30,邀请1名业内资深技术专家进行线上分享技术干货,解答热点问题。你可以通过以下方式参与:关注LiveVideoStack公众号【livevideostack】回复“
Stella981 Stella981
3年前
LiveVideoStack线上交流分享 ( 一 ) —— 解密GPU:视频转码与分析加速
为了给大家提供一个学习,交流的平台,畅聊音视频技术开发新趋势,新实践。我们推出了LiveVideoStack线上交流分享活动,在每周四晚19:30,邀请1名业内资深技术专家进行线上分享技术干货,解答热点问题。你可以通过以下方式参与:关注LiveVideoStack公众号【livevideostack】回复“
Wesley13 Wesley13
3年前
35岁,真的是程序员的一道坎吗?
“程序员35岁是道坎”,“程序员35岁被裁”……这些话咱们可能都听腻了,但每当触及还是会感到丝丝焦虑,毕竟每个人都会到35岁。而国内互联网环境确实对35岁以上的程序员不太友好:薪资要得高,却不如年轻人加班猛;虽说经验丰富,但大部分公司并不需要太资深的程序员。但35岁危机并不是不可避免的,比如你可以不断精进技术,将来做技术管理或者
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。