B_Skip类型宏块

如果满足以下三个条件则将宏块按 Skip 类型进行编码
(1)最佳模式选择为Inter16×16;
(2)MC得到的最终运动矢量等于预测运动矢量,即运动矢量的残差为0;

(3)变换系数均被量化为0。


现在的问题是当我编码一个宏块时,用预测运动矢量作为块的运动矢量,然后判断出DCT变换系数被量化为0,那么我就能说skip模式是该宏块的最优模式了吗?

 

    满足你上面说的三个条件就能说SKIP是最佳的了, p帧

 

我知道满足上面的三个条件最优就是skip模式了 

现在我想请教的是
当我编码一个宏块时,用预测运动矢量作为块的运动矢量,然后判断出DCT变换系数被量化为0,那么我就能说skip模式是该宏块的最优模式了吗?

   不一定,有可能使用其他的分块模式最优, mvd=0. DCT系数也被量化为0

Skip宏块与Direct预测模式浅析

对于我来说,这个是一个老问题了。以前蓝风车专门给我讲解,我都没搞懂(真有点对不起蓝风车的细心教诲哈。呵呵~~~)。今天终于弄清楚了,特此总结出来,请大家指正。               

=================================================================================               

B_Skip类型宏块(200503版标准,表7-14最后一行):无像素残差,无运动矢量残差(MVD)。解码时,通过Direct预测模式(时间或空间)计算出前、后向MV后,直接利用前、后向MV得到像素预测值。像素重构值=像素预测值        

B_Direct_16*16类型宏块(200503版标准,表7-14第一行):有像素残差,无运动矢量残差(MVD)。解码时,通过Direct预测模式(时间或空间)计算出前、后向MV后,利用前、后向MV得到像素预测值。然后,像素重构值=像素预测值+像素残差解码值      

P_Skip类型宏块(200503版标准,表7-13最后一行):          也就是COPY宏块。无像素残差,无运动矢量残差(MVD)。直接利用预测MV得到像素预测值。像素重构值=像素预测值        



【特别说明】:

1、有残差就有CBP(表示残差编码状态,详见BBS中我的帖子“ CBP详解”),反过来没有残差当然就没有CBP;      
2、请一定不要把 Direct 类型宏块、Skip 类型宏块、Direct 预测模式这三个混淆了。B_Skip 类型宏块(大小为 16*16)、B_Direct_8*8 类型块(大小为 8*8)和B_Direct 类型宏块(大小为 16*16)都采用的是 Direct 预测模式;
3、关于时间和空间的Direct 预测模式,请大家参考标准文档的8.4.1.2小节;
4、与本论坛另一篇帖子“ 请问Skipped Macroblock是什么意思? ”参照学习;
5、我是跟踪JM86解码过程得出以上结论的。如果某些部分有点错误,请大家指正。

猜你喜欢

转载自blog.csdn.net/wangyanchao151/article/details/8730001