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

    文章

    18275

    浏览量

    222140
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8651

    浏览量

    361773
  • NEON技术
    +关注

    关注

    1

    文章

    9

    浏览量

    6045

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    视频解码生成:打造极致观影体验的关键技术

    在现代多媒体时代,音视频解码生成技术已成为提供极致观影体验的核心要素。它不仅能够确保音视频数据的高效传输,还能保证播放的流畅性和画质清晰度,
    的头像 发表于 02-25 14:43 147次阅读

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

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

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

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

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

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

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

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

    网络解码矩阵:满足各种视频解码需求的利器!

    讯维网络解码矩阵是一种强大的视频解码解决方案,能够满足各种视频解码需求。无论是在线直播、视频会议
    的头像 发表于 09-04 10:24 389次阅读
    网络<b class='flag-5'>解码</b>矩阵:满足各种<b class='flag-5'>视频</b><b class='flag-5'>解码</b>需求的利器!

    网络解码矩阵:让视频流更流畅,画质更清晰!

    讯维网络解码矩阵的工作原理、技术特点和优势,以及如何实现更优质的视频流传输。 工作原理: 讯维网络解码矩阵是一种基于云计算
    的头像 发表于 09-04 09:57 453次阅读
    网络<b class='flag-5'>解码</b>矩阵:让<b class='flag-5'>视频</b>流更流畅,画质更清晰!

    实现信号共享离不开AV讯维视频矩阵控制器

    和同事,老师和同学所播放给我们的幻灯片以及视频演示,比起在黑板上的奋笔疾书,很过瘾吧?您知道吗,要看到这些都离不开AV视频矩阵控制器。 AV视频
    的头像 发表于 08-24 16:38 473次阅读
    要<b class='flag-5'>实现</b>信号共享离不开<b class='flag-5'>AV</b>讯维<b class='flag-5'>视频</b>矩阵控制器

    Arm Neon技术指南

    数据流上进行数学操作的额外指示。图1-1:单一指示、多个数据架构 可通过加快音频和视频编码/解码、用户界面、2D/3D图形或游戏来改进多媒体用户的经验。Neon还可以加快信号处理算法和
    发表于 08-08 06:13

    使用GNU和ARM RealView®编译工具生成NEON代码的不同方法

    NEON技术实现高级SIMD架构扩展的ARM处理器中提供单指令多数据(SIMD)操作。这些操作可以显著加快对大型数据集的重复操作。这在诸如媒体编解码器之类的应用中是有用的。 许多使用
    发表于 08-02 16:00

    国产8K视频的落地,离不开新的编解码标准

    开放标准,比如AV1、VP9等,哪怕也已经开始普及,但终归不属于自主产权的视频解码标准。正因如此,国内早在2002年就成立AVS工作组,发展AVS标准。而在8K时代悄然到来下,AVS也迎来了第三代版本。   面向 8K 的 A
    的头像 发表于 06-26 09:18 1861次阅读
    国产8K<b class='flag-5'>视频</b>的落地,离不开新的编<b class='flag-5'>解码</b>标准

    硬解之后,NVIDIA Ada架构GPU新增AV1编码

    AV1 是新的黄金标准视频格式,与旧的 H.264 和 H.265 格式相比具有更高的效率和质量。它是开放媒体联盟标准化的最新免版税高效视频编码器。
    的头像 发表于 05-12 10:20 893次阅读
    硬解之后,NVIDIA Ada架构GPU新增<b class='flag-5'>AV1</b>编码