写点什么

字节新一代解码器 BVC 帮助 H.266/VVC 标准商业落地

字节跳动视频云技术团队

  • 2023-03-05
    北京
  • 本文字数:2549 字

    阅读完需:约 8 分钟

字节新一代解码器 BVC 帮助 H.266/VVC 标准商业落地

字节新一代解码器 BVC ,助力 H.266/VVC 标准商业落地


随着网络环境的优化和移动设备性能的提升,高清流畅的极致观影体验吸引着更多的终端用户。高分辨率视频资源也给压缩标准提出了新的要求。从 H.264/AVC 标准到 H.265/HEVC 标准,虽然压缩效率提升一倍,但依然无法满足高清视频的压缩需求。因此,拥有更高压缩效率的 H.266/VVC 标准诞生。诞生初期,由于 H.266/VVC 编码标准复杂,且缺少对应的终端设备硬解码,让商业落地显得遥不可及。



用户通过高清、超高清视频获得极致的观看体验      


01

H.266/VVC 标准的压缩效率比 H.265/HEVC 提升一倍


多功能视频编码 ( Versatile Video Coding , VVC ,也称为 H.266 ) 是联合视频专家组制定的最新一代视频编码标准,于 2020 年 7 月正式定稿。作为 HEVC 的继任者, H.266/VVC 能够在相同的质量下将压缩效率再提升一倍。 H.266/VVC 标准的推动将能为未来视频内容的发展提供巨大的潜力。


H.266/VVC 的前一代标准是 H.265/HEVC 。随着近几年移动终端的蓬勃发展,H.265/HEVC 已经得到广泛应用,但其压缩效率仍无法满足大量 4K/1080P 等高清视频资源的需求。过大的视频资源压缩文件,占据了存储空间并吞噬着网络带宽,导致用户观看视频时频繁卡顿。



而在相同的编码质量下, H.266/VVC 标准的压缩率可以比 H.265/HEVC 标准提升一倍!


举个例子,使用 H.265/HEVC 编码标准,用户观看一部电影需要 1GB 的流量,换成 H.266/VVC 编码标准后,仅需 500MB 的流量,并且在智能终端播放的时候,画质可以保持不变。 H.266/VVC 标准,使高清在线视频不再是流量吞噬者。


尽管 H.266/VVC 标准的压缩性能非常优异,但其解码复杂度显著高于 H.265/HEVC 标准。终端设备解码过程中会出现设备发热、耗电增加以及视频卡顿的现象,影响用户观看体验。在硬件解码芯片尚未问世的背景下,如何设计并实现一款超高性能的 VVC 软件解码器成为我们的重要目标。


02

BVC 解码器,打通 H.266/VVC 标准落地的最后一公里


BVC 是字节跳动自研的新一代解码器,已正式支持 H.266/VVC 标准。 BVC 解码器可应用于 Android 、 iOS 、 Linux 、 MacOS 和 Windows 等多种平台。


针对移动端用户众多、设备性能参差不齐的问题,我们在 Android 和 iOS 的 Arm 平台上,对 BVC 解码器进行了特别的优化,在部分设备上的解码速度达到参考软件的数十倍。 BVC 的高效解码,使 H.266/VVC 标准的商业落地不再遥不可及。


看一组详细数据,根据国际会议提案 JEVT-V128,在搭载 A14 处理器的 iPhone 12 上,对于 4K 分辨率标准测试码流, BVC 单线程平均解码速度达到了 22fps ;2 线程可以实现 4K 视频的实时解码。对于 1080p 分辨率标准测试码流,BVC 单线程平均解码速度是 86 fps ,即单线程可实时解码 1080p 视频。因此,在高端手机上,BVC 解码器支持流畅播放高清甚至超高清视频。


图 1 对比不同线程的 BVC 与 VTM-11.0 的解码速度


图 1 展示了在 iPhone12 上,BVC 和参考软件 VTM-11.0 解码不同分辨率视频的速度对比。横轴依次代表解码 4K 、1080p 、480p 和 240p 分辨率的视频;纵轴表示使用 VTM-11.0 解码和 BVC 分别使用 1 、2 、4 、6 线程解码的平均帧率,数值越大表明解码速度越快。虚线表示各分辨率视频实时播放的常用帧率。可以看出, BVC 仅单线程的解码速度相较于 VTM-11.0 就有着 6-10 倍的巨大优势。


除了上述标准测试码流外,我们还测试了使用 BVC 编码器生成的抖音视频码流, BVC 解码器表现出了强大的解码性能。在性能逊于 iPhone 12 的小米 6 手机上, BVC 单线程即可完成 1080p 视频的实时解码;在其它中低端手机上, BVC 单线程即可完成对 720p 视频的实时解码。 BVC 解码器的出现,使得在各种性能的设备上均可实现对 H.266/VVC 标准视频资源的解码,并为用户带来流畅的观看体验。


03

BVC 解码器如何实现技术突破


为了有效降低 BVC 解码器的计算复杂度,加快解码速度,我们从并行性、代码框架、汇编指令和访存效率等方向进行了优化,性能改善显著。


细粒度的并行算法


BVC 支持不同层次的并行算法,包括帧级并行、块级并行和模块级并行。帧级并行即同时解码多个视频帧,可以充分利用多核 CPU 的性能,并行程度最高;块级并行即同时解码多个解码块;模块级并行即利用 CPU 的剩余资源,同时处理多个较复杂的模块。块级与模块级相结合可以高效降低视频帧的输出时延,保障视频会议和直播等实时场景的流畅体验


对流水线友好的代码框架


BVC 有着非常轻量级的代码框架,更加迎合空间较小、性能较差的移动端设备。针对各个功能模块特性, BVC 有不同的算法实现,尽可能减少了分支跳转,提升了 CPU 流水线的饱和度


高吞吐量的汇编优化


我们采用高吞吐量的 SIMD 指令,针对像素帧内预测、帧间插值、量化、变换、重建和环路滤波等复杂模块做汇编优化,均达到了数倍的模块加速比,最大程度提升 CPU 的计算效率


高效的访存设计


移动设备内存和缓存空间较小,访存效率有限,这极大地制约了解码器的性能。为此,我们针对 BVC 解码器的访存进行了优化,包括减少内存读写次数、集中内存使用和提高缓存命中率。优化后,访存不再成为在移动设备上解码超高清视频的瓶颈


04

详细性能数据


我们使用 VVC 官方参考软件 VTM-11.0 做了一组测试。在通用配置下,生成若干组 8 比特码流,打开标准测试条件下的全部工具,包括较复杂的 DMVR 、 BDOF 和 ALF 等。测试的序列为标准通用测试序列,包括 class A 、 B 、 C 、 D 、 F 五类。其中, class F 是屏幕内容场景,分辨率从 480p 到 1080p 不等; class A-D 为自然场景,视频的分辨率分别为 4K 、 1080p 、 480p 和 240p 。


在 iPhone 12 ( A14 处理器)上, BVC 单线程解码 4K 分辨率、8 比特标准测试码流的速度平均达到了 22fps ,是参考软件 VTM-11.0 解码速度的 10 倍;在使用全部 6 个线程后解码速度甚至可达 55 fps,最高达到 78fps 。对于 1080p 分辨率、8 比特标准测试码流, BVC 解码器的单线程平均解码速度是 86 fps ,达到参考软件的 8.8 倍。


表 1 解码器速度对比详细数据


05

总结


BVC 解码器可以实现超清、高质视频的实时快速解码,展现出在移动端上卓越的解码能力,对视频行业的发展和 H.266/VVC 标准的落地起到积极的推进作用。


接下来,基于实际应用中的问题和挑战,我们的技术团队将持续发力,不断优化 BVC 解码器的性能,旨在为新一代标准的落地做出更多贡献。


2023-03-05 15:0611715
用户头像
鲁冬雪 GMI Cloud China Marketing Manager

发布了 364 篇内容, 共 285.6 次阅读, 收获喜欢 299 次。

关注

评论 1 条评论

发布
用户头像
问一下对协议的支持怎么样?在没有硬件支持的情况下,对CPU的占用率如何
2023-03-10 20:11 · 天津
回复
没有更多了
发现更多内容

【YashanDB知识库】exp 导出数据库时,报错YAS-00402

YashanDB

数据库 yashandb

【YashanDB知识库】YAS-04209 unexpected word ;

YashanDB

数据库 yashandb

电商平台能挡住恶意网络爬虫的攻击吗?

网络安全服务

爬虫 IP 电商平台 带宽 电商网站

想在 Java 八股文面试中脱颖而出?这1000 道互联网大厂 工程师面试题必不可少

Summer

Java 程序员 面试 架构师 大厂

鸿蒙原生开发手记:05-开发之外的那些事

少湖说

HarmonyOS 鸿蒙系统

东风汽车在电机控制器电容温升仿真方法与应用

Altair RapidMiner

汽车 新能源汽车 仿真 #人工智能 altair

跨国专线网络如何开通?申请流程解析

Ogcloud

企业网络 跨国网络 国际网络专线 跨国网络专线 国际互联网专线

【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常

YashanDB

数据库 yashandb

【YashanDB知识库】YAS-00004 feature "create user" has not been implemented yet

YashanDB

数据库 yashandb

SD-WAN:跨国企业组网方案

Ogcloud

SD-WAN SD-WAN组网 SD-WAN国际专线 跨国网络专线 跨国企业组网

深度解析DAPP开发 | 智能合约与业务应用

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

更快、更灵活、场景更丰富,云效镜像构建能力升级啦!

阿里巴巴云原生

阿里云 云原生

【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码

YashanDB

数据库 yashandb

【YashanDB知识库】由于druid中间件配置导致的YAS-04003 maximum number of open cursors is 1000

YashanDB

数据库 yashandb

【YashanDB知识库】YAS-00004 feature "implict table" has not been implemented yet

YashanDB

数据库 yashandb

以腾讯混元模型为例,在管理平台上集成一个智能助手

为自己带盐

大模型应用

第二十八期中国管理会计沙龙在北京成功举办

用友智能财务

啃完阿里老哥这套Java面试八股文后,成功收获蚂蚁 offer!

Summer

Java 程序员 面试 架构师 大厂

更快、更灵活、场景更丰富,云效镜像构建能力升级啦!

阿里云云效

阿里云

Karmada v1.12 版本发布!单集群应用迁移可维护性增强

华为云开发者联盟

Kubernetes 容器编排 Karmada #云原生 #开源

【YashanDB知识库】使用leading hint调整SQL执行计划后报错YAS-04522 invalid hint leading

YashanDB

数据库 yashandb

【YashanDB知识库】YAS-04003 maximum number of open cursors is xxx

YashanDB

数据库 yashandb

从流畅到智能再到安全,看看原生鸿蒙如何“一锅端”

最新动态

【YashanDB知识库】yasboot集群状态命令登录失败问题

YashanDB

数据库 yashandb

链游破局之路:如何打破边缘化,获得更好的发展

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

推荐一个C#轻量级矢量图形库

不在线第一只蜗牛

C#

字节新一代解码器 BVC 帮助 H.266/VVC 标准商业落地_语言 & 开发_InfoQ精选文章