竖:平均峰值信噪比 (分贝) 横:数据率 (每秒千比特)
图4:采用与不采用黄金帧的移动及日历的峰值信噪比 (PSNR) 之对比
实时质量
在最简单的模式下,On2 VP7编码器使用的周期数只比解码器多 30%,但仍然保持出色的质量。当有大量可用周期时,实时 VP7 更能够产生媲美最佳离线编码的质量。而且,这是自动实现的:VP7 乘以每一个编码帧,并自动调节其复杂性,以确保尽可能利用可用周期来获得最佳质量。
能够达到这样,是因为 TrueMotion VP7 采用了一套自适应算法 (adaptive algorithms) 和探试性 (heuristics) 方法。这些算法决定哪些运动向量和模式最可能产生最佳结果。工作良好的模式和运动向量会被探试得更频繁,而无法产生好结果的模式则被完全关闭、或被禁止到这个在所有模式下的误差超过了一个自适应阈值。这些阈值和两次调节间的周期也都是自适应的。当VP7的压缩速度足够快时,阈值和探试周期增加。当VP7工作顺利时,对模式的探试便更频繁。
在VP7拥有多余时间的极端情况下,它会回复到最低和最佳模式,甚至回到允许完全搜索和速率失真优化的某一点。在相反的极端情况下,VP7 可能在整个帧上只进行5或6次运动搜索,而每个宏模块 (macroblock) 只检查2或3个不同模式,就会产生结果。
实时模式
为了确保静态相机的视频会议具有出色的实时模式,On2 VP7 充分利用了预测有时是接近完美的这项特点。如果VP7 (通过运动或模式搜索) 发现预测器与它将进行编码的原始帧非常匹配,它会避免进行大量工作。在这种情况下,VP7放弃了正向变换、量化、令牌化(tokenization)、逆量化、逆向变换和重组代码等操作。唯一需要保留的是在比特流中加入一套代表所有0的令牌 (token),并直接把预测器拷贝到帧缓冲器中。如果这种情况时常发生,编码器实际上比解码器运行得快,故无法缩短从比特流读取令牌的时间。
这种技术可能对感知视频流质量有重大的影响。它可通过忽略较小的变化 (由相机噪声引起的波动) 来消除背景噪声。另外,它让编码器把所有可用周期都集中用在包含显着变化 (移动的部分) 的小部分视频屏幕上。因此,观者最关心的图像部分,亦即发言者的面孔,将获得最多的周期。
解码器的复杂度
为了确保解码速度,On2 VP7比特流采用了一种创新性的简单设计。
象其它编解码器一样,VP7也采用了一个环内去块效应滤波器 (一般称为环路滤波器),以解决模块边缘的方块效应问题。这种方案在模块边界上运用了一个自适应的一维 (one-dimensional) 模糊/低通滤波器。VP7 的滤波器可在字符算法中单独工作,任何可能溢出 (超出字符边界0-255) 的中间操作都会被钳位。这就确保了 SIMD 指令使用的最大宽度,并意味着,如果一个处理器能支持64位SIMD,则VP7的环路滤波器比相同的C操作快了将近8倍。
On2 VP7 的预测滤波器比许多其它编解码器简单。预测器总是由单一帧创建,而且在正向和后向参考帧之间绝没有插补。如果使用了任何亚像素运动,则可在该单一帧上运用单阶滤波器来完成。
简化的熵逻辑
On2 VP7还采用了一种比其它先进编解码器更简单的熵 (entropy) 编码技术。熵解码包含了简单的字符算法,可利用乘法或几种查找算法进行计算。虽然VP7使用了精密的自适应内容建模技术,但若每一比特位都根据比特流进行解析,则不适合。
灵活的解码实现方案
On2 VP7的比特流划分方法在构建快速解码器时保留了许多选项。所有模式和运动向量信息都存储在一个子流中;所有剩余信息则被存储在另一个单独的子流中。创建整个预测帧的工作可被分离出来,在处理器的一个单独内核上运行,而该处理器会分析和产生剩余信息供稍后重组之用。或者,VP7 解码器可采用较传统的运行方法,一次处理一个宏模块,从一个子流中取出单个模式和运动向量,然后从另一个子流的该宏模块中取出剩余信息。两个极端选择之间可进行折衷,以确保低数据率和低指令缓存失效率。
总结
由于On2的VP7 专有压缩技术具有种种优势,因此获得了市场的广泛采纳。黄金帧、出色的实时质量和解码器的简易性,都让On2 VP7成为目前网络视频及未来可能应用的理想选择。