h264基础知识 宏块,片

1、宏块(Macro Block)

h264

一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。宏块分为I、P、B宏块,I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;B宏块则是利用前后向的参考图形进行帧内预测;

同时在I帧中只有I宏块,因此只能进行帧内预测

在P中可以存在I宏块和P宏块,进行帧间预测,前向预测

在B帧中存在I,P,B宏块,可以进行帧内,前向预测,后向预测

两个标准在此处概念相似,有不同的地方可能主要是在宏块的类型划分和参考帧的范围上

下面是264在《H264 and MPEG-4 video compression》当中的介绍


在文档中提及到sub_mb_pred 从自己的工程经验推断,这是一个微块的概念,主要在帧间预测中会使用到,在帧间预测中如果当前块为16*16,那么在实际预测的时候会根据宏块的类型相应劈分成四个微块

进行处理,比如4个8*8,之后在一些标准中添加了不规则划分的概念,那么还有可能是4*8,12*8等微块的概念

AVS ,265的一些标准中需要扩展说明:

宏块的大小并不是唯一确定的,需要根据标准相应的制定,比如可以是32*32,64*64 有时候甚至是可以更大,这个时候需要明白两个概念:

最大编码单元:即能解码的最大块(AVS标准在序列头中一般会通过几个bit传输)

最小解码单元:能够解码的最小块(一般会与工程的存储空间相关联,还有一个简单的办法就是看这个标准或者工程中DCT,IDCT变化做的是多大的块变换就可以略知一二)

2、片(Slice)

h264:

一帧视频图像可编码成一个或者多个片,每片包含整数个宏块,即每片至少一个宏块,最多时包含整个图像的宏块。

     片的目的:为了限制误码的扩散和传输,使编码片相互间保持独立。片共有5种类型:I片(只包含I宏块)、P片(P和I宏块)、B片(B和I宏块)、SP片(用于不同编码流之间的切换)和SI片(特殊类型的编码宏块)。

以下是片的句法结构:片头规定了片的类型、属于哪个图像、有关的参考图像等;片的数据包含了一系列宏块和不编码数据。

片组是一个编码图像中若干宏块的一个子集,包含一个或若干个片。

一般一个片组中,每片的宏块是按扫描次序进行编码的,除非使用任意片次序(Arbitrary Slice Order, ASO)一个编码帧中的片之后可以跟随任一解码图像的片。


h264基础知识 宏块,片_第1张图片

AVS:

在AVS中片的作用和在h264中差不多,但是没有SI,SP帧的概念,其余三种片,一般也没有过多的区分片的类型,和帧的类型联系得比较密切,都是为了使编码片之间相互独立,在做帧内参考,以及一些熵解码的运算的时候都需要参考上方或者左边的宏块,但是必须要求这些

宏块是在一个片内的才有意义,同时多片的划分对于CPU的并行操作也是有一定帮助的


注意:我所了解到的264和AVS当中一般的片划分都还是以整行为单位的,但是在现在的265标准中貌似出现了不规则的片划分,之后会做补充说明

你可能感兴趣的:(h264,AVS,宏块,片)