0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NEON技术如何实现移动端视频高效解码AV1?

LiveVideoStack 来源:yxw 2019-06-05 10:47 次阅读

ARM的NEON技术,其基本原理是让处理器在每个时钟周期内完成更多工作。dav1d 0.3.1中,在解码1080p视频时,基于NEON开发的dav1d可以毫不费力地达到30 fps的流畅度。

多媒体解码是一项数据规模的挑战。解码几个像素对现代处理器来说小菜一碟,但当多媒体文件升级至每秒6200万像素的数据规模时,一般的处理器就会不堪重负。

因此,ARM的NEON技术应运而生。这项基于ARMv7与ARMv8指令集的扩展技术,其基本原理是让处理器在每个时钟周期内完成更多工作;同时,支持单指令多数据(SIMD)操作也令其在单个指令中不会一次性处理一个庞大或精确的数据,而是处理多个较小的数据。

NEON允许在单个指令中处理128位数据。几乎在所有情况下,128位都是精确有用的方法。如果我们有一个128位精度的坐标系,我们甚至可以在仙女座星系指定每个点且精确度可达0.00006皮米,这是什么概念呢?要知道最小的原子氢原子的直径也才32pm,而仙女座星系距离地球有250万光年!

很明显,如果是为了清晰且流畅呈现用户上传的视频,我们并不需要如此夸张的精确度,这也就是为什么在大多数情况下每个像素的色彩深度为8位,而若想实现HDR则需要10或12位的色彩深度。使用NEON则可通过将128位的数据精度拟合成每像素8或16位色彩深度,以防止出现路由错误。

总而言之,NEON可在单个操作中适应多个数据精度,且当视频解码器需要对大量数据进行处理时,使用NEON是一个不错的主意。

dav1d中的NEON

dav1d是由VideoLAN维护的AV1解码器,VideoLAN则是VLC媒体播放器、x264与x265视频编码器的主要推动者。很多开发人员为将此项目打造成可在几乎任何CPU上运行且处理速度最快的AV1视频编码器做出了不可磨灭的贡献。

回顾2018年12月的dav1d 0.1.0,我在不同规格的ARMv8处理器上比较基于C语言开发的dav1d与基于NEON汇编的dav1d(感谢Janne Grunau和MartinStorsjö提供的这些数据),尽管当时只有少数功能通过NEON加速,但性能仍相对于平均提高了80%。

有无NEON 代码对dav1d 0.1.0的影响

几个月后,更多基于NEON的应用逐渐出现。在得到最终结果之前,让我们先来探究一下哪些让NEON的性能如此出色。

功能及其加速

解码视频需要多个步骤,每个步骤由一项单独的函数执行,多个函数组合成视频解码处理流程;这些步骤也会根据编码器、参数与视频内容酌情增减修改。dav1d的开发人员严重依赖一个名为checkasm的工具以测试特定功能所需的时间。他们使用汇编语言编写代码并用checkasm测试,如果一些步骤的处理速度足够快那么它们就会被合并。

在MartinStorsjö的测试中,他使用了两个编译器(Clang 9和GCC 7)与三个不同的内核:Arm Cortex-A53、Arm Cortex-A72和Arm Cortex-A73。第一个是一般性能的有序核心,后两个是高性能的无序核心。

下表显示了当前基于NEON加速所有功能所得到的测试结果。其中的数字表示速度——基于C语言开发的dav1d带来了5秒钟的加速而基于NEON开发的dav1d则带来了2.5秒加速。

这张表的信息量远不止这些。首先,我们可以看到加速结果的分布区间非常广泛,从几个百分点到20+都涵盖在里面;其次我们还看到在大多数情况下,Clang编译器可以更好地优化基于C代码的dav1d(可以看到NEON的加速成绩更小);除此之外我们还可以发现,一般性能且有序的A53内核,其加速成绩比高性能且无序的A73内核高,而A73的效率又高于A72,其原因可能是前者的解码带宽降低。

需要明确的是,由于NEON的多项功能并非全部满负荷运行,这里的平均加速成绩并不能完全代表其整体性能。对于当前的NEON来说,其性能取决于核心和编译器。尽管计算加权平均值可以在一定程度上从侧面反映出大致性能水平,但每个视频(编码器、编码器设置、内容都不同)却存在很大差异。

但一般来说,基于NEON汇编语言形成的大多数函数,在性能优化方面会比基于编译器优化的C语言所形成的函数快4到5倍,在某些特殊情况之下可能会超过20倍。

dav1d 0.3.1性能

我将会从以下图表开始介绍:

测试此1080p视频我们可以观察到结果存在巨大差异:基于编译器优化的C语言(使用Clang)开发的dav1d,其在Apple A7与Snapdragon 835平台甚至无法达到24 fps的帧率,而基于NEON开发的dav1d可以毫不费力地达到30 fps的流畅度,而Apple A10则从45 fps跃升至100 fps以上。如此性能提升对于移动设备来说意味着更低的功耗与更高效的资源利用。

如果将结果标准化,我们可以仔细查看确切的加速成果:

Snapdragon 835中的Cortex-A73所获得的加速最为明显,几乎是基准的3倍。其他核心平均值略低,为基准的2.5倍。这意味着从基于优化后的C语言开发的dav1d所实现的1倍性能提升到基于NEON开发的dav1d 0.1.0所实现的1.8倍性能提升,再到dav1d 0.3.1高达2.5倍的性能提升,NEON的优化成果十分显著。

展望未来

dav1d的Arm64开发还远未完成,现在需要实现的最重要功能是提高移动端的NEON整合速度(同时推广用于PC的AVX2和SSSE3),发展空间巨大。我们希望可实现比平均基准三倍以上的性能优化,同时更好的自动矢量化也可提供很多帮助,但主要的驱动程序仍然需要开发者的智慧和勤奋。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19155

    浏览量

    229044
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9040

    浏览量

    366725
  • NEON技术
    +关注

    关注

    1

    文章

    9

    浏览量

    6076

原文标题:NEON技术如何实现移动端视频高效解码AV1?

文章出处:【微信号:livevideostack,微信公众号:LiveVideoStack】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Arm架构的珠峰芯片加速极致视频体验

    视频解码技术作为支撑超高清视频及泛音视频产业发展的基石,其重要性愈发凸显。H.264/AVC 是目前广泛使用的编
    的头像 发表于 11-01 13:54 516次阅读
    基于Arm架构的珠峰芯片加速极致<b class='flag-5'>视频</b>体验

    【RTC程序设计:实时音视频权威指南】音视频的编解码压缩技术

    技术可以实现不同的高效压缩和解压缩,常用的就是MP4文件。 MP4是一种容器格式,包含多种类型的媒体文件,如视频,音频,静态图像等,这些媒体数据同时存在于同一个MP4文件中,MP
    发表于 04-28 21:04

    微软Teams应用整合AV1解码器,降低带宽需求,提升画面清晰度

    AVI是新一代的开源视频编码格式,因高效的压缩能力而备受推崇。借助AV1,只需极小的带宽即可保证视频的高清传输。对于要求高清晰度和流畅度的Teams应用,此时使用
    的头像 发表于 03-28 09:52 406次阅读

    解码矩阵技术赋能电力监控,实现高效能源管理

    在现代电力系统中,高效、稳定的监控与管理对于保障能源安全、提升能源使用效率具有至关重要的意义。讯维解码矩阵技术作为一种前沿的视频解码与传输
    的头像 发表于 03-25 17:24 457次阅读

    讯维解码矩阵技术为机场监控提供高清、流畅的视频解决方案

    机场作为交通枢纽,其安全性和运行效率至关重要。高效的监控系统是保障机场安全运行的重要手段,而讯维解码矩阵技术则为机场监控提供了高清、流畅的视频解 首先,讯维
    的头像 发表于 03-25 17:22 403次阅读

    讯维网络解码矩阵构建全面视频监控系统

    随着酒店行业的快速发展,安防工作日益受到重视。为了提升酒店的安防水平,构建全面、高效视频监控系统成为了关键。而讯维网络解码矩阵作为先进的视频处理
    的头像 发表于 03-25 17:21 316次阅读

    谷歌计划在Android系统升级中采用libdav1d替换libgav1,提高AV1视频性能

    然而,尽管众多流媒体公司提供AV1内容却仍用其他编码器形式传输至终端设备,因为许多设备尚未配置硬件解码AV1视频的芯片,仅靠软件解码器难以满
    的头像 发表于 02-28 11:02 1251次阅读

    SDI转AV转换器:实现高清视频信号转换的新选择

    (Audio Video)是两种常见的视频信号接口,分别用于专业影视制作和普通家电设备。如何将SDI信号转换为AV信号,实现高清视频在不同设备间的传输和显示,一直是
    的头像 发表于 02-22 15:03 513次阅读

    SDI转AV转换器技术解析:转换过程中的关键要素与优势

    随着高清视频技术的快速发展,SDI(Serial Digital Interface)转AV转换器成为了实现高清信号与普通家电设备兼容的关键设备。这种转换器在
    的头像 发表于 02-22 15:03 556次阅读

    SDI转AV转换器:实现高清与标清的无缝对接

    随着视频技术的不断发展,高清视频逐渐成为了主流,但在实际应用中,我们仍然需要处理大量的标清视频。如何实现高清与标清
    的头像 发表于 02-22 14:40 489次阅读

    视频解码器硬件加速:实现更流畅的播放效果

    随着多媒体内容的日益丰富和高清化,传统的软件解码已经难以满足人们对流畅播放体验的需求。因此,音视频解码器硬件加速技术的出现,为提升播放效果带来了革命性的改变。 硬件加速的原理 硬件加速
    的头像 发表于 02-21 14:40 900次阅读
    音<b class='flag-5'>视频</b><b class='flag-5'>解码</b>器硬件加速:<b class='flag-5'>实现</b>更流畅的播放效果

    Vulkan 1.3.277新增AV1 Decode扩展,提升视频解码质量

    NVIDIA始终积极投入这一开源计划,不仅持续完善Vulkan Video演示范例,还示范了Encode H.264/H.265以及Decode AV1扩展在其平台上的使用效果。
    的头像 发表于 02-03 14:02 834次阅读

    解码一体机:技术、应用与挑战

    了先进的编解码算法,能够实现高效、实时的视频处理。这种技术大大提高了视频
    的头像 发表于 01-31 14:48 466次阅读
    编<b class='flag-5'>解码</b>一体机:<b class='flag-5'>技术</b>、应用与挑战

    从编解码一体机看视频处理技术的未来

    和硬件加速技术,以实现高效率的视频处理。这将有助于降低延迟、提高传输质量和节省带宽资源。 多平台和多终端访问:随着移动互联网和智能终端的普
    的头像 发表于 01-31 14:47 384次阅读
    从编<b class='flag-5'>解码</b>一体机看<b class='flag-5'>视频</b>处理<b class='flag-5'>技术</b>的未来

    AMD Radeon RX 7000系列移动显卡介绍

    AMD Radeon RX 7000系列移动显卡是专门为移动游戏平台和高级内容创建打造的卓越笔记本电脑显卡,采用统一的AMD RDNA 3计算单元,支持人工智能加速的视频编码和硬件加速AV1
    的头像 发表于 12-12 11:19 1407次阅读