改进而不改变VP9 — 2

作者:Alex Eleftheriadis,Vidyo(原文链接

翻译:刘通

原标题:Improving VP9 Without Changing It – part 2

前文链接:改进而不改变VP9 — 1

在这一系列的三篇文章中,我们将要讨论VP9,可伸缩性,以及Vidyo全新的,更好性能的VP9编解码器。在第一篇文章中,我们讨论了时域可扩展性,今天我们要深入聊一聊空间可扩展性。

第二课可扩展性维度是空间可扩展性,它比时间的要稍微复杂一些。假设现在有一个例子,我们正在以720p来编码一个视频流。以可扩展的方式编码意味着我们除了可以用最高分辨率1280×720来播放一段视频以外,还可以用更低的分辨率,比如说640×360或者320×180。注意,在这个例子中的分辨率,每维下降的系数正好是2的倍数。虽然这不是要求规定的,但是2:1或者1.5:1是空间伸缩性常用的比例。最低分辨率被称作基层,用来构建每个更高分辨率的数据被称为增强层。

这些术语反应了编码数据是如何创建的。当我们编码一个图像时,编码器会把原始图像缩小到基层的分辨率。然后回对它编码,并且使用已重塑的图像作为参考来讲其编码为具有更高分辨率的图像。

vp9-3

图三:使用两个空间层以及一个时间层进行编码的视频

图三所示的是使用两个空间层,不使用时间可扩展性(因为只有一个时间层)进行的图像构建过程。注意这里有两个图像集,或者说空间层。最底下的一个集是第分辨率图像(基层)使用上篇文章的图一IPPP结构进行编码。除此之外,我们还有空间增强层(S)。其中,图像是通过之前增强层中的图像以及相对应的基层图像一起预测得来的。层与层之间的这种依赖关系对于提高压缩率,改善错误鲁棒性都是非常重要的。

现在我们可以将空间和时间可伸缩性概念结合在一个设计中,从而允许空间分辨率和帧速率的任意组合。两个空间层和三个时间层的例子,图4展示了图像结构是什么样的。

vp9-4

图4:可伸缩性结合:两个空间层和三个时域层

假设一个720p 30fps的原始视频源,这个结构能让我们获取一系列的层,可以提供720p或者360p,以及30,15,和7.5fps之间的任意组合。最重要的是,你可以在任何质量点之间切换解码和不必通知编码器或者进行任何信号处理工作。

尽管使用空间和时间可伸缩性来处理一个流是比较容易的,但是真正做一个并不简单。你可以看图4中的结构,每个剑斗都连接了两个图像或者层,加起来的话编码器一共要做上千个决定。但是解码器就会简单的多,因为它只需要根据编码器的指示来工作就可以了。

你可以把编码器想象成一个作曲家,然后把解码器想象成一个合成器,只需要根据作曲家创作的乐谱重放音乐就可以了。并不像一个有88个键的键盘乐,编码器的参数更像是一个飞机的驾驶舱(如图5),有成千个参数需要协调配合才能使整体正常工作。

vp9-5

图5:A380-800的驾驶舱

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营