下一代视频编码的新选项?xvc 2.0

摘要:

专注开发视频编解码器的软件公司Divideon(总部位于斯德哥尔摩,瑞典)于2018年7月3日正式发布了xvc codec的第二个版本xvc 2.0。xvc是一款纯软件开发的新一代的视频编解码方案,致力于在低比特率流媒体应用中提供较高的压缩性能和良好的视觉质量。xvc模块化的软件参考实现目前已经在github上开源,开源地址为https://github.com/divideon/xvc。

xvc简介

xvc codec是Divideon发布的一款新的视频编解码器,其中包括参考编码器和参考解码器。该编解码器基于一套较为灵活的软件实现的视频编码工具构成,这些编码工具主要来源于MPEG标准(例如AVC/H.264和HEVC),但同时还包含了一些超越这些标准的压缩技术,能够实现较高的视频压缩性能。xvc codec的第一个版本xvc 1.0已于2017年9月发布,其压缩性能要优于包括HEVC在内的同一代视频编解码器。目前最新发布的xvc 2.0提供了更高的压缩性能,与近期发布的AV1编解码器相比,可以在相同的视觉质量下将比特率降低10%到20%[1]。此外,从xvc 2.0开始,还提供了一个免版税的基准配置版本(royalty-free baseline)。xvc 2.0加入了一些实质性的改进,其中包括新的编码工具和特性,例如支持多线程编码等。由于xvc具有可扩展的比特流结构和版本控制框架,xvc 2.0完全兼容xvc 1.0,所有由xvc 1.0编码的比特流都可由xvc 2.0解码器解码。

xvc技术特性

xvc也是按照主流的编码结构、基于块的混合(帧间/帧内)视频编解码器。xvc codec对原始YUV图像数据进行处理并将其压缩为基于NAL(网络抽象层)单元的结构化比特流,codec内部同样包括帧内、帧间预测,DCT变换,量化,上下文自适应熵编码以及边界滤波后处理等模块。每个模块中的各种技术工具可以通过码流中的控制信息在运行时按需进行开关控制。

xvc codec允许更加灵活的视频格式组合,适用范围更广。图像尺寸可以从256×144和320×180到4K,8K甚至16K视频。色度格式和比特深度也同样支持多种组合,表1给出了xvc编解码器原生支持的色度格式和比特深度组合,而解码器的输出格式可通过解码器配置进行控制。

表1 xvc支持的色度格式和比特深度组合[2]

xvc编解码器设计的初衷是以流媒体服务为主要用途,其中一部分原因是因为流媒体服务在近年来发展特别迅速,消费需求较高,需要非常高效的压缩技术。此外,xvc还具有轻量级的高级语法层,以及在自适应比特率(ABR)应用中进行码流切换的新方法。

以下简单介绍xvc codec中的部分特性[3]:

  • 块结构

xvc编码时图像被划分成64×64大小的像素块,即CTU。CTU可以以全尺寸编码,或者可以进行二叉树或四叉树划分,从而产生两个或四个编码单元,如图1所示。这些编码单元可以进一步划分成较小的像素块,一直到4×4的编码单元(色度为2×2)。CTU通过划分产生编码单元树(coding unit tree),进而在树的叶子上执行预测和变换。与HEVC的块结构相比,有两个重要差异:

  1. 在xvc中,编码单元、预测单元和变换单元之间没有区别。
  2. 在xvc中,变换块可以是非正方形的。

在xvc的默认配置中,帧内图像针对亮度和色度分别使用不同的编码单元树。而对于帧间图像,只使用同一个编码单元树。

图1 xvc编码结构划分示例

  • 帧内帧间预测

在xvc中支持67种帧内预测模式,包括DC模式,Planar模式和65种不同的角度模式。帧内预测时使用当前块左侧和/或上方已编码的像素作为参考。参考像素在用于预测之前会进行滤波操作。对于垂直方向、水平方向和DC模式,还会应用一个后处理滤波器以在变换之前对边缘进行平滑。对于两个色度分量,会使用相同的预测模式进行预测,但色度预测模式不必与亮度预测模式相同。

xvc帧间预测包括前向预测和双向预测。并且支持平移运动和仿射运动,针对编码单元的每个4×4块使用不同的运动矢量。在xvc中,还存在特殊的帧间预测模式,会考虑当前图像中邻近像素与参考图像中邻近像素之间的变化。当场景的光照水平(light level)随时间变化时,该模式给出了较好的预测结果。

  • 变换

在xvc 1.0中,使用可分离的类DCT变换,其中变换块的宽度和高度不必相等。变换块的大小始终与编码单元的大小相同。对于大小为64的变换块,其高频分量会被置零。xvc 2.0还引入了率失真优化技术用于不同变换的评估和选择。

  • 熵编码

xvc中使用的是基于上下文自适应的二进制算术编码器(CABAC),类似于AVC和HEVC中的熵编码方法。

  • 环路滤波

xvc codec包含一个去块效应的环路滤波器,仅在满足某些条件时才会应用于图像内4x4大小的块单元。对于帧内图像,当且仅当边缘处在不同编码单元的边界时,才会进行滤波。滤波操作会根据边缘的局部特性在边缘的每一侧修改最多两个像素点。

  • 限制标志 Restriction flags

xvc比特流以segment header作为开始,segment header中包含了有关视频格式的信息,如图像宽度、高度、比特深度、色度格式等。由于xvc codec的基本设计原则是在条件语句中控制各个编码工具的开关,因此,segment header还包含特定的标志,用来指示codec中各个独立的编码工具是否在当前编码中使用。这使得开发者可以很方便地评估和验证特定工具对codec压缩性能和复杂度的影响,而无需编译不同版本的软件。代码中限制标志的使用示例如图2所示。

图2 限制标志在代码中的使用示例

xvc初步性能表现

广义上来说,视频编解码器的作用是保证正确有效解压缩视频序列,同时尽可能地提高码流的视觉质量。将不同的编解码器放在一起进行比较时,通常观察在同等编码质量条件下比特率可以降低多少,即BD-Rate。下面给出xvc官网上提供的一些测试结果(大部分结果更新于2018年3月)[3][4][5]。

表2 xvc vs. AV1 (NETVC objective-1-fast测试集 360p single-pass Random-Access)[4]

表3 xvc vs. AV1 (NETVC objective-1-fast测试集 360p & 720p single-pass Random-Access)[3]

表4 xvc vs. AV1 (NETVC objective-1-fast测试集 360p multi-pass Random-Access)[4]

表5 xvc vs. AV1 (NETVC objective-1-fast测试集 multi-pass Random-Access)[3]

表6 xvc full vs. baseline (NETVC objective-1-fast测试集 single-pass Random-Access)[3]

表7 xvc full vs. baseline (NETVC objective-1-fast测试集 multi-pass Random-Access)[3]

图3 给出了xvc、AV1、HEVC(HM)、HEVC(x265)和VP9在序列Speedbag(360p)上的编码结果,其中VP9为multi-pass coding,其他均为single-pass coding。

图3 不同codec在序列Speedbag上的PSNR-Bitrate曲线[4]

图4 给出了xvc、AV1、HEVC(HM)、HEVC(x265)和VP9在序列RollerCoaster(720p)上的编码结果,其中VP9为multi-pass coding,其他均为single-pass coding。

图4 不同codec在序列RollerCoaster上的PSNR-Bitrate曲线[4]

xvc与MPEG

在第122次的MPEG会议上,MPEG讨论并起草了关于可能出现的新的视频编码标准的规范(N17539),同时还创建了Ad hoc group(AHG)来为符合N17539规范的视频编码方案征集证据。根据[6],从目前结果看,xvc 2.0基本符合N17539规范中三个方面的要求:

  • Baseline profile
  1. 对于10比特数据,baseline profile压缩性能不低于HEVC Main 10
  2. 对于常见的分辨率,baseline profile解码复杂度不高于HEVC Main 10两倍以上

xvc 2.0满足上述要求,其baseline的性能优于HEVC Main 10 [7],并与HEVC Main 10相比没有明显增加解码复杂度。

表8 xvc baseline profile vs. HM 16.17 RA10

  • A higher profile
  1. 对于10比特数据,higher profile要比HEVC Main 10提升30%的RD性能
  2. 对于常见的分辨率,higher profile的解码复杂度不高于HEVC Main 10三倍

xvc 2.0目前相比HEVC Main 10可以提供10%~20%的性能提升[8],解码复杂度的增加较小。其开发人员声称,加入额外一些编码技术可以达到30%的目标,同时不会过多增加解码复杂度。

表9 xvc higher profile vs. HM 16.17 RA10

  • Tool-isolation and sub-profiling
  1. Codec可以根据需要灵活切换编码工具
  2. Codec允许创建不同的profile子集

xvc codec从一开始针对所有包含的编码工具引入了restriction flags(相当于工具开关),使得第三方能够轻松创建任何兼容已有profile的profile子集。目前xvc codec中总共包含76个编码工具,baseline中只使用了其中25个编码工具。

xvc许可证

目前xvc有3种类型的许可证,包括xvc free、xvc pro和xvc unlimited。下面列出了三种许可证的异同点。

表10 xvc三种许可证的异同[9]

其中,xvc instance定义为在一个或多个xvc比特流上执行相关操作的实体。这些操作包括但不限于:生成/编码xvc比特流,解码xvc比特流,转码自/至xvc比特流,分析xvc比特流,验证xvc比特流,分发xvc比特流,打包/解包xvc比特流,加密xvc比特流,多路复用xvc比特流等。此外,许可证不限于xvc参考软件的特定实现。有关专利注册与取消、专利保护/赔偿条款、许可机构的信息可参考本公众号之前的帖子“新的开源编码器XVC,AV1和HEVC之外的另外选项?”或官网[9]上的介绍。

参考文献

[1]http://www.releasewire.com/press-releases/divideon-releases-xvc-20-an-open-source-video-codec-with-a-royalty-free-baseline-1005793.htm

[2]https://xvc.io/concept/technology/

[3]https://datatracker.ietf.org/doc/draft-samuelsson-netvc-xvc/?include_text=1

[4]https://xvc.io/concept/performance/

[5]https://awcy.divideon.com/

[6] J. Samuelsson, P. Hermansson, “Evidence for potential new video coding standardization”, m43518, Ljubljana, SI, July 2018.

[7]Example results for xvc baseline profile relative to HM 16.17 https://awcy.divideon.com/?job=1pass-HM-16.17-ra10%402017-11-17T12%3A29%3A11.462Z&job=1pass-xvc-baseline-180523-sp0-chroma-1%402018-05-25T08%3A58%3A24.807Z

[8]Example results for xvc relative to HM 16.17 https://awcy.divideon.com/?job=1pass-HM-16.17-ra10%402017-11-17T12%3A29%3A11.462Z&job=1pass-xvc-180226-sp0-chroma-1%402018-02-26T10%3A34%3A38.388Z

[9]https://xvc.io/license/

原文发布于微信公众号 - 媒矿工厂(media_tech)

原文发表时间:2018-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码神联盟

图像识别 | 使用 Java 实现AI人工智能技术-图像识别功能

说到语音识别、语音翻译、图像识别、人脸识别等等,现在已经非常非常非常普及了,看过‘最强大脑’的朋友,也应该对‘小度’这个机器人有所了解,战胜国际顶尖的‘大脑’-...

1.5K50
来自专栏AI科技大本营的专栏

假期充电 | 10大机器学习开源项目推荐(Github平均star为1385)

本文推荐的10大机器学习开源项目是由Mybridge从250个机器学习开源项目中挑选出来的,Github 平均 star为 1385,主题包含:Tensorfl...

12520
来自专栏企鹅号快讯

外国网友如何使用机器学习将邮件分类?其实很简单

AiTechYun 编辑:Yining 背景:一名叫做Anthony Dm.的外国网友试图利用机器学习将一堆未标记的电子邮件进行分类,以下是他对这次操作发表的文...

23180
来自专栏程序生活

斯坦福tensorflow教程(一) tensorflow概述Tensorflow简介为什么选择tensorflow基于Tensorflow的框架资源Tensorflow基础数据流图 Data Flo

27750
来自专栏新智元

KDnuggets 本月最受欢迎:5 个不容错过的机器学习项目

【新智元导读】受欢迎的机器学习项目很多,它们受欢迎的程度体现在在 GitHub 上获得的星数(Star)。新智元不久前介绍了 GitHub 上星数最多的16个深...

30460
来自专栏人工智能头条

通过Amazon Machine Learning建立一个数值回归模型

18150
来自专栏媒矿工厂

超高清内容生产中的视频编码技术

通过逐步引入宽色域(WCG)、高动态范围(HDR)、更高的分辨率和更高的帧率(HFR)等用以改善视频消费者观看体验的新特性,Ultra-HD(UHD-1)预计将...

49340
来自专栏人工智能头条

如何用OpenCV、Python和深度学习实现面部识别?

这篇文章首先将简单介绍下基于深度学习的面部识别的工作原理,以及“深度度量学习”(deep metric learning)的概念。接下来我会帮你安装好面部识别需...

33780
来自专栏大数据文摘

R的基本绘图功能

18550
来自专栏大闲人柴毛毛

10分钟搞懂蚁群算法

蚂蚁几乎没有视力,但他们却能够在黑暗的世界中找到食物,而且能够找到一条从洞穴到食物的最短路径。它们是如何做到的呢? 蚂蚁寻找食物的过程 单只蚂蚁的行为及其简单...

3.4K140

扫码关注云+社区

领取腾讯云代金券