快手K266Dec

简介

K266Dec是快手公司为ARM平台设计的VVC软件解码器,在JVET-V0070提案中有相关介绍。这款解码器是根据VVC标准从头设计的,支持VVC main profile的所有编码工具。

对于Android平台,在Huawei P40上,以单线程解码2K 8bit CTC码流速度能达到33fps,是VTM11.0解码器的4.11倍。

对于IOS平台,在iPhone 12 Pro Max上,以单线程解码2K 8bit CTC码流速度能达到94fps,是VTM11.0解码器的4.78倍。

K266Dec对安卓平台进行了高度优化,因为快手视频的浏览量里80-90%的来自安卓手机。

为了让VVC适配更多机型,必须保持较低的CPU使用率和功耗。K266Dec专注于ARM平台的缓存友好的流水线和高吞吐量SIMD优化。另一方面,K266Dec着重加强单线程解码能力,这会严重影响CPU实时利用率。

针对单线程解码场景,K266Dec主要优化下面几个内容:

  • ARM/NEON汇编:K266Dec充分利用ARM和NEON指令集,优化了计算密集型模块,例如CABAC解码、帧内/帧间预测、反变换、去方块滤波、SAO等。为了更充分利用单核CPU流水线,几乎对每个汇编函数都仔细设计了指令级别的流水线。

  • 缓存友好的流水线和低访存操作:K266Dec利用块间的多个本地信息共享缓冲区来避免从帧级内存访问信息从而降低cache的未命中率。K266Dec通过精细的内存分配和本地操作来最小化解码的访存操作。

对于解码复杂度更高的场景,例如4K分辨率视频的解码,K266Dec充分利用多核CPU的资源,在Huawei P40上,对于class A的序列,4线程解码比单线程可以达到3.45倍的加速比。对于多线程解码的优化如下:

  • 细粒度并行:除了传统的帧级和波前并行,K266Dec还使用了细粒度的并行。一个CTU的解码过程被分为多个子阶段:解析,模式生成,重建、滤波等。这样,K266Dec可以极大的减少数据依赖,提高吞吐量。

实验结果

实验使用的码流可以分为两类:JVET CTC序列和Kwai App的UGC序列。Kwai的UGC序列都是720x1280的分辨率,都是选自Kwai App上用户上传的热门视频,浏览量从800k到2M。

JVET CTC的码流使用VTM11.0编码,配置如下:

  • 位深为8bit

  • 禁用ALF/CCALF

  • 其他配置使用RA配置文件

Kwai UGC码流生成使用如下配置:

  • 位深为8bit

  • 恒定主观质量的码率控制,平均比特率低于2Mbps

  • 禁用GEO / BDOF / SbTMVP / DMVR / LMCS / CIIP / MIP / JCCR / SBT / LFNST / MTS

  • 禁用ALF/CCALF

  • 其他配置使用RA配置文件

安卓平台速度测试

使用下面三款安卓设备测试K266Dec的解码速度,

高端:Huawei P40

  • Chipset: Kirin 990 5G (7 nm)

  • CPU: Octa-core (2x2.86 GHz Cortex-A76 & 2x2.36 GHz Cortex-A76 & 4x1.95 GHz Cortex-A55)

  • Memory: 8GB RAM

中端:Oppo R17

  • Chipset: Qualcomm Snapdragon 439 (10 nm)

  • CPU: Octa-core (4x1.95 GHz Cortex-A53 & 4x1.45 GHz Cortex A53)

  • Memory:4GB RAM

低端:Vivo Y93s

  • Chipset: MediaTek MT6762 Helio P22 (12 nm)

  • CPU: Octa-core 2.0 GHz Cortex-A53

  • Memory:4GB RAM

以下表1~3是K266Dec相比于VTM11.0的平均解码速度。相比于VTM11.0,K266Dec在Huawei P40上单线程解码能达到3.89倍的加速比。

表4显示K266Dec在 Huawei P40, Oppo R17 和Vivo Y93上使用ARM单核,对于UGC序列解码速度分别能达到97fps,41fps和19fps。

IOS平台速度测试

IOS测试设备选择iPhone 12 Pro Max,配置如下:

  • Chipset: Apple A14 Bionic (5 nm)

  • CPU: Hexa-core (2x3.1 GHz Firestorm + 4x1.8 GHz Icestorm)

  • Memory: 6GB RAM

在CTC码流上,K266Dec单线程解码加速比可达到4.66倍。

感兴趣的请关注微信公众号Video Coding
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值