VP8的预测

预测是指任何猜测帧中某个区域内容的尝试。这可以包括基于该帧中已知像素的预测(这种方法被称为修补)或前一帧中的运动补偿。预测通常包含一些附加信息,例如用于通知解码器运动矢量的信号,该运动矢量用于运动补偿的预测。帧内预测是一种在不需要其他帧参考时猜测块的方法。VP8的帧内预测基本是照搬H.264标准:子块预测模式基本和H.264的i4×4模式一样;而且块预测模式与i16×16模式一致。色度的预测模式在经验上也和H.264一样。H.264 High profile中定义的i8×8模式在VP8中没有出现。另一个区别是,在VP8中H.264的平面预测模式被替换为TM_PRED,这是一个非常模糊的近似模拟。就具体预测模式而言,VP8和H.264略有不同,但都和H.264同名..

说实话,我对此很失望。当然H.264的帧内预测很优秀,但是很明显这七年来这项技术也进步了很多,而且我觉得低俗抄袭是Real(见RV40)这类公司处于守势的东西。我一直渴望On2能想出一些甚至有点创意的东西。但是,比这些更重要的另一个问题是,H.264的空间帧内预测是有专利保护的,我不认为On2仅仅通过预测模式的一些舍入变化就可以逃离专利。我希望看到谷歌为自己正名。他们必须提供一个很好的解释,说明为什么他们不会卷入专利纠纷。

帧内预测模式评价:H.264稍加修改的拷贝可能会比H.264差,因为缺少i8×8模式。帧间预测是一种借助其他过去帧来猜测块内容的方法。一般来说,帧间预测包括两个主要部分:参考帧和运动矢量。参考帧是用于将像素复制到预测帧并根据复制的块和当前处理块之间的偏差形成运动矢量的过去帧。VP8最多支持3个参考帧:时间轴上的前一帧、“alt ref”帧和“黄金帧”。就运动矢量而言,VP8支持与H.264非常相似的可变大小宏块分割,就亚像素精度而言,VP8支持1/4像素精度的运动矢量,并使用6阶插值滤波器。简而言之:

VP8参考帧:最多3个

H.264参考帧:最多16。

VP8分段类型:16× 16,16× 8,8× 16,8× 8,4× 4。

H.264分割类型:16× 16,16× 8,8× 16,可变子分割(每个8×8块可以细分为8×8,8×4,4×8或4×4)。

VP8色度MV的估算:每个4×4色度块的MV是用同一位置亮度MV的平均值(与MPEG4-ASP相同)得到的。

H.264色度MV的计算:色度块的MV直接使用亮度块的MV。

VP8插值滤镜:1/4像素,6阶亮度,混合4/6阶色度。

H.264插值滤镜:1/4像素,6阶亮度(分层滤镜),双线性色度。

H.264是,但VP8否:B帧,权重预测

H.264在参考帧结构中具有比VP8更高的自由度。8×8子块的细分基本没用,这里省略VP8基本不会影响。色度MV的计算比H.264精确,但比H.264慢一点..在实际使用中,这种差异在速度和压缩比上接近于零,因为很少使用8×8亮度块(而且我假设在VP8中也是如此)。

VP8的插值滤波器可能略好于H.264,但从解码器和编码器两方面来看,它的实现速度肯定较慢。分层滤波器允许编码器预先计算所有可能的半像素位置的值,并在必要时快速计算1/4像素位置的值,而非分层滤波器不能,这将导致非整数像素运动估计的速度非常慢。并非所有的非分层滤波器都是不好的——分层滤波器在所有的H.265提案中都被抛弃了——这只是VP8在性能方面与H.264相比的固有劣势。另外,在我看来,在色度上使用高达6阶的滤镜是完全没有必要和没有用的。

VP8的B帧缺失是致命缺陷。b帧可以在很小的速度损失下提高压缩比10-20%甚至更多,在VP8中它们的缺失可能比本文提到的所有其他问题影响的压缩比之和还要严重。但这并非完全出乎意料。On2从未在任何以前的视频格式中使用过B帧。而且它们使用B帧可能会导致严重的专利问题,即使On2复制其他受到专利严重保护的H.264功能似乎没有问题。缺乏对权重预测的支持也会在一定程度上影响压缩率,尤其是对于渐变场景。

帧间预测评价:类似H.264坏预测帧结构的宏块划分结构。比较复杂,比H.264插值滤波器略好。基本上比H.264差,如果不考虑B帧缺失对压缩率的严重影响。