poc type 0 公式8-3原理分析_阿龙(185194081)
POC TYPE 0 中 8-3 公式原理分析
问题描述:
POC TYPE 0将POC分成MSB和LSB两部分,只传LSB;解码端使用8-3公式来计算MSB。最后在解码端,POC= MSB+LSB。问题的关键在于解码端如何正确计算MSB。在H264标准中,主要参考8-3来做,但是8-3的原理是怎样的呢?本文将试着来讨论一下,主要分进位和借位两种情况来分析。
进位情况:IBBB。。。P1BBB。。。P2。。。
可以看出8-3的第一种情况对应的是判断何时应该进位。首先,我们不管8-3,来想一下在一个序列中,进位时当前帧有什么特征?显然,此时的LSB比其参考帧的LSB会小。那么这个条件是不是完备的呢?显然不是,当前帧的LSB比其参考帧的LSB小还包括B帧的情况。因此,判断进位时,需要排除这种情况。由上面的分析可知,当前帧的LSB比前一参考帧的LSB小包括两种情况:
1)进位
2)B帧情况
因此,我们来分析如何排除B的情况,首先来看看B帧有什么限制条件。因为POC TYPE 0在计算当前MSB时,是以前一参考帧的LSB来判断的,如果当前帧的LSB与前一参考帧的LSB重复,MSB就无法处理了。这里的LSB不重复有两个情况:
1)P1与其前面的B的LSB不重复
2)P2与P1前的B的LSB不重复
先考虑第一种情况,以标题处的序列为例:要保证P与其前面参考帧的LSB不重复,只要做到2*(P前面的B帧的数量+1)<= MAX LSB 即可。
现在考虑第二种情况:经过分析发现,由于B帧的乱序作用,要保证P2与P1前的B 不重复,需要使2*(P2和P1前的B帧数目总和+2)小于MAX LSB(因为P2的POC与P1前的第一个B的POC相差两个间隔)。因此,就得出下面的限制条件:
只要B帧数量满足式子(B num1+B num2+2)*2<= MAX LSB, 就不会发生LSB重复的情况。
综合情况一和情况二,我们可以得到(B num1+B num2+2)*2<= MAX LSB,命B max_num为两参考帧之间最大的B帧数目,则上式变换得:2*(B max_num+1) <= MAX LSB/2。
则我们得到取最大B帧时,第一个B帧的LSB与参考帧的POC差最大为2*B max_num< MAX LSB/2。
那么如何排除B的情况呢?由上面的结论可知:
当前帧和其参考帧的LSB的差值小于MAX LSB/2且当前帧的LSB比其参考帧的LSB小时,为B帧的情况,非进位;当前帧和其参考帧的LSB的差值大于等于MAX LSB/2且当前帧的LSB比其参考帧的LSB小时,为进位的情况。至此,8-3的第一种情况分析完毕。
借位情况:IBBB。。。P1BBB。。。P2。。。
可以看出8-3的第二种情况对应的是判断何时应该借位。首先,我们不管8-3,来想一下在一个序列中,借位时当前帧有什么特征?显然,此时的LSB比其参考帧的LSB会大。那么这个条件是不是完备的呢?显然不是,当前帧的LSB比其参考帧的LSB大还包括P帧的情况。因此,判断借位时,需要排除这种情况。由上面的分析可知,当前帧的LSB比前一参考帧的LSB大包括两种情况:路西弗
1)B帧借位
2)P帧递增
下面我们来分析如何排除P帧递增的情况,首先来计算下P帧递增最大值。由进位情况分析可知:2*(B max_num+1) <= MAX LSB/2, 那么我们可以推出P帧递增最大值=2*(B max_num+1) <= MAX LSB/2。
因此,只要保证当前帧和其参考帧的LSB的差值大于MAX LSB/2,就可以排除P帧递增的情况。继而,我们可以得到8-3的第二个判断准则。
另外我们还可以得到一个附加结论:MAX LSB>4* B max_num,因此,MAX LSB=4* B max_num +2即可,此时的MAX LSB是最优的。
小结:上述分析建立在与H264乐园的firstime和路西法讨论的基础上。其中,firstime 提出从保证LSB不重复来推导8-3,对本文帮助巨大。上面是本人的一些推理过程,希望大家持怀疑的态度来看,欢迎批评指正。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。