腾讯发布全球首个面向移动端的 H.266/VVC 标准视频解码器,即其自研的 O266 移动端版本,手机可看 4K 超高清 VVC 视频。O266 已成为世界领先的全平台 VVC 解码器,支持 main10 profile,包括高分辨率、高动态范围、屏幕内容编码等重要功能。
近几年,以视频为信息载体的互联网应用越来越广泛,海量视频数据的存储及传输对视频编解码技术提出了更高的要求。以腾讯为代表的众多国内外公司参与的新一代国际视频编解码标准 H.266/VVC 相较于上一代标准 H.265/HEVC,在同样的主观质量下,可以减少 50% 左右的数据大小,既能满足人们对视频质量的追求,又能降低存储与流量消耗。
H.266/VVC 在 main10 profile 里能同时支持高分辨率、高动态范围、屏幕内容编码等功能,进一步提升在各种视频场景下的编解码能力,这得益于其更灵活的编码结构和更加优化的编码技术。
腾讯自研的 H.266/VVC 编解码器 O266enc 和 O266dec,由腾讯多媒体实验室编解码团队于 2019 年牵头并协同腾讯云架构平台部、微信和腾讯视频等多个团队联合研发。经过不懈的努力与探索,最终在 H.266/VVC 标准定稿后的三个月内,即 2020 年 10 月,率先发布了基于 X86 平台的实时 H.266/VVC 解码器 O266dec,以及基于该解码器的开源播放器 O266player,目前能够在 PC 端上完成 4K H.266/VVC 视频的实时解码。
▲O266player 视频播放示意图
2021 年 1 月,O266dec 新增 main10 profile 移动端解码器,进一步促进了 H.266/VVC 标准生态建设。它以全面的模块性能优化和出色的并行结构设计,能够达到 266 标准在移动端的单核 1080p 或多核 4K 码流的实时解码,未来将广泛应用于面向移动端的视频点播、视频直播、音视频通信、视频智能生产、短视频、VR/AR 等各个领域,服务于腾讯内外部相关业务。
O266player 能够实现清晰流畅的视频播放,得益于 O266dec 优秀的视频解码架构,通过多维度的并行处理,从而达到大幅利用多核多线程技术的目的,使其解码性能指标大幅提升。O266dec 的并行解码架构主要包括以下四个方面:
第一,帧层级并行:独立并行解码帧内预测帧,以及没有相互依赖性的帧间预测帧;同时不同帧之间的熵解码和像素处理也可以并行。
第二,CTU 层级并行:利用 Wavefront 技术可以实现不同 CTU 行之间的 CTU 级的并行解码。
第三,模块层级并行:针对像素的操作,如运动矢量推导、预测、反量化、反变换和重建等,以及环路滤波操作可以并行处理。
第四,亚 CTU 层级并行:所有帧间预测 CU 都可以并行解码,并最大程度的利用 SIMD 指令。
为了能够在移动端支持 H.266/VVC 解码,腾讯多媒体实验室在 O266dec 上增加了许多移动端相关优化,使得其解码器性能在移动端得到大幅提升。
例如,自适应环路滤波器(Adaptive Loop Filter,ALF)作为 H.266/VVC 解码器中复杂度最大,优化难度最高的模块,是腾讯在移动端平台上优化的重点,该模块在整个解码过程中的复杂度占比如图所示。
▲优化前各模块解码复杂度占比图
从图中可以看出 ALF 模块占整个解码复杂度的 60% 以上,复杂度占比远超其他模块,同时它的优化复杂度也是最高的,流程上的简化以及提升并行性都是比较困难的,因此是所有模块中优化优先级最高的。为提升移动端 ALF 解码速度,团队对整个 ALF 流程进行整理与分类,并充分结合移动端 SIMD 对 ALF 滤波模块进行优化,使得解码器速度得到大幅提升 , 解码速度是原始代码的 2 倍以上。
除去 ALF 模块之外,对于同样复杂度较高的插值(Interpolation)模块,团队也对其进行了细致优化。插值模块也是 H.266/VVC 解码器中计算量比较大的一个模块,其涵盖的多种多样的滤波器是整个模块的优化重点。团队对滤波器参数特点进行了充分的分析,并将其根据参数类型以及输出结果进行分类与逻辑优化,在结合移动端 SIMD 的基础上,使得解码速度得到明显提升。
除去一些通用模块,团队对于针对 B 帧等其他编码工具集模块都着手进行了优化,优化范围与内容相对比较全面。例如双向光流(Bi-directional optical flow,BDOF)模块,它是一个用于 4x4 子块级别上优化 CU 的双向预测信号,经过团队的细致优化,这一模块的解码速度也获得了进一步提升。
此外团队对于其他重要模块也都进行了深度优化,优化完成后各模块性能占比饼图如下图所示。
▲移动端优化完成后各模块复杂度占比示意图
以 iOS 端 A14 处理器为测试平台,O266dec 移动端性能如下:
在单线程下,O266dec 在采用 RA(RadomAccess)配置时,对于 2K 标准序列,可完全满足 30fps 实时解码的需求 ; 对于 2K SCC(Screen Content Coding)序列可充分满足 60fps 以上的实时解码需求。
在多线程下,O266dec 在采用 RA(RadomAccess)配置时,4K 标准序列在 6 线程下的解码速度可以达到 30 帧左右,可以实现 266 在移动端的实时解码。
同时,腾讯自研的解码器也已经集成在了 O266player 的 iOS 端应用上,在移动端播放 H.266 解码画面清晰流畅,能够充分满足 H.266/VVC 实时解码的需求,性能优势十分明显。
面向移动端的 O266dec 是国内首个 H.266/VVC 标准在移动端的实际应用,是腾讯视频编解码技术进展的又一个重要里程碑。未来腾讯多媒体实验室将持续优化和完善解码器,将最新技术输出至行业,助力多媒体生态技术的发展以及数字化产业的建设。