Title: Proposal for Extended Coefficient Range for H.263+
Source: PictureTel Corporation
Author: Gary J. Sullivan, Matthew M. Bace, Wilson Chung, John Sievers, and Edmund Thompson
Time: November 11-14, 1996
我们提出了一种新的码流的语法来使得码流内可以传输在[-127,127]之外的量化参数值.这种语法在当编码器的保真度非常高的情况下非常有效(比如说当量化参数为1或2的时候),这是由于此时是在极高的比特率的情况下或非常静态的场景中.
当量化步长极小的情况下,一个块内的部分AC系数量化结果超过127是很有可能的,这样就不可以在当前的H.263的语法中进行表示.当这种情况发生时,我们的编码器只有两种选择:
1) 将越界的系数值修正到可表示的范围内,这样就避免了这个麻烦,不过这个选择会在解码图象中有更加严重的块效应.
2) 试图用更大的量化步长来对这个块进行重量化.然而,因为对步长的改变是受DQUANT值的限制的,可以想象到的就是有这样的情况:无法在允许的步长范围之内使得量化的参数值进入可表示的范围之内.这样,这种对宏块的重编码就使编码器的编码压力大大加强,而且可能会使得解码图象中的某些宏块要比其他的宏块更加的模糊.
这个提案消除了这种潜在的问题,它使得这种大的系数无损的被编码(而不是通过改变量化步长)
我们提议对语法进行如下修改:在ESCAPE码(0000 011)出现之后,继续为H.263解码后面的7位,比如第一位用作LAST位,后6位解码为RUN长度.接下来的8位被解码位H.263的LEVEL值,除非位模式选0111 1111(这被解码为LEVEL值等于127的情形).当这种位模式出现时,就认为下13位叫做EXTENDED LEVEL,就需要在[-2047,2047]上进行解码.因为有起始码竞争的问题,可能需要把这13位EXTENDED LEVEL分为两段,中间的分隔位为'1'.
这也是一个古董式的提案了,虽然它里面提到的表示方法现在已经没在用了,而且里面的方法看起来也并没有那么复杂,但是对于修改一个标准来说,任何一个更改都是牵一发而动其全身的,比如这个提案,你把值的表示域改变了,结果就是你解码的时候,你取位的时候也跟原来不同了,操作模式也会不一样,甚至需要考虑是不是程序中的哪一部分会因为把边界扩大而会产生某个部分溢出或是造成算法无效的情况.
最后需要记住的一点是,这个问题在所有的编码器中都会遇到,真正遇到的时候大家的解决方案都是什么样子的呢?H.263+好像最终就是用这个提案中的方法吧,记不是很确切了,其他的标准等完全查明之后告诉大家.