写点什么

字节新一代解码器 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:0611001
用户头像
鲁冬雪 GMI Cloud China Marketing Manager

发布了 362 篇内容, 共 265.5 次阅读, 收获喜欢 294 次。

关注

评论 1 条评论

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

足不出户“逛”银行,37家城商行、农商行手机银行App性能大比拼

博睿数据

APM App 评测 网银 银行

快速入门 Nacos 作为配置中心操作

zhuoqianmingyue

nacos SpringBoot 2

代码刚提交暂存区,组长突然要我把新增代码 Commit另一分支怎么办?

zhuoqianmingyue

git

zookeeper到nacos的迁移实践

捉虫大师

架构 nacos

程序员的修行之路-关于编程语言

牧马人

程序员

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

产品周刊 | 第 16 期(20200524)

八味阁

产品 设计 产品经理 产品设计

使用Spring Boot和Docker构建微服务架构(一)

Tux Hu

Docker 架构 容器 微服务 Spring Boot

程序员的修行之路-关于编程语言

牧马人

程序员

linux 账户及安全管理(一 账户管理)

牧马人

Linux

玩转SpringBoot2.x之缓存对象

zhuoqianmingyue

redis springboot

使用Spring Boot和Docker构建微服务架构(三)

Tux Hu

Docker 架构 容器 微服务 Spring Boot

使用Spring Boot和Docker构建微服务架构(四)

Tux Hu

Docker 架构 容器 微服务 Spring Boot

后台定时统计任务太耗时如何优化一下

zhuoqianmingyue

线程池

游戏夜读 | 世界两大游戏评论!

game1night

卡巴斯基产品本地化用时能缩短 77%,怎么做到的?

葛仲君

项目管理 软件开发 本地化 开发流程

程序员的修行之路-保持良好的心态

牧马人

程序员

ARTS第一周

困到清醒

ARTS 打卡计划 起跑

Java | @Override 不要再把它当成可有可无的了

YoungZY

Java 注解 Override annotation

使用Spring Boot和Docker构建微服务架构(二)

Tux Hu

Docker 架构 容器 微服务 Spring Boot

Spring Cloud 和 Dubbo 哪个会被淘汰?

程序猿DD

Spring Cloud dubbo

微软:正式发布针对 .NET Core的 Winform 设计器

葡萄城技术团队

.net 微软 Win .net core

爬虫框架Scrapy应用实践-淘宝保险频道数据抓取【1】-前期准备

hadesxiong

Python 爬虫 保险 Scrapy

Jsp页面报错后如何找到提示信息中的_jsp.java文件

阡陌r

2020年3月云主机性能评测报告

博睿数据

云计算 运维 机房 数据中心 主机

企业微信机器人在大型财务共享中心的应用实践

DT极客

微信gif图片大小的规则

石云升

微信 GIF

2020年3月北京BGP机房网络质量评测报告

博睿数据

运维 APM 机房 数据中心 拨测

配置国内的pip源以提高使用pip安装python软件包的速度

良少

Python pip

是什么在背后支撑起“带货一哥”李佳琦?

博睿数据

负载均衡 APM 压测 秒杀 并发

数据产品经理实战-DMP搭建

第519区

产品经理 营销

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