前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >下一代视频编码的新选项?xvc 2.0

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

作者头像
用户1324186
发布2018-08-23 14:49:03
1.8K0
发布2018-08-23 14:49:03
举报
文章被收录于专栏:媒矿工厂媒矿工厂

摘要:

专注开发视频编解码器的软件公司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/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 媒矿工厂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档