快手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
 

根据原作 https://pan.quark.cn/s/0ed355622f0f 的源改编 野火IM解决方案 野火IM是专业级即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。 主要特性有:私有部署安全可靠,性能强大,功能齐全,全平台支持,开源率高,部署运维简单,二次开发友好,方便与第三方系统对接或者嵌入现有系统中。 详细情况请参考在线文档。 主要包括一下项目: 野火IM Vue Electron Demo,演示如何将野火IM的能力集成到Vue Electron项目。 前置说明 本项目所使用的是需要付费的,价格请参考费用详情 支持试用,具体请看试用说明 本项目默认只能连接到官方服务,购买或申请试用之后,替换,即可连到自行部署的服务 分支说明 :基于开发,是未来的开发重心 :基于开发,进入维护模式,不再开发新功能,鉴于已经终止支持且不再维护,建议客户升级到版本 环境依赖 mac系统 最新版本的Xcode nodejs v18.19.0 npm v10.2.3 python 2.7.x git npm install -g node-gyp@8.3.0 windows系统 nodejs v18.19.0 python 2.7.x git npm 6.14.15 npm install --global --vs2019 --production windows-build-tools 本步安装windows开发环境的安装内容较多,如果网络情况不好可能需要等较长时间,选择早上网络较好时安装是个好的选择 或参考手动安装 windows-build-tools进行安装 npm install -g node-gyp@8.3.0 linux系统 nodej...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值