中华视频网上转过来,firstime原创
http://bbs.chinavideo.org/viewthread.php?tid=1134
假设 A、B 是上下相邻的两个 MB:
在非宏块对的情况下:A、B宏块序号不连续,相差图像一行宏块个数。即按光栅扫描顺序编号。
在帧宏块对的情况下:A、B宏块序号连续,即按锯齿扫描顺序编号。A、B 组成不变。A 称为顶帧宏块,B 称为低帧宏块。
在场宏块对的情况下:A、B宏块序号连续,即按锯齿扫描顺序编号。但是这个时候的 A 是由原来 A、B 两个宏块中的奇数行像素组成,称为顶场宏块;而 B 是由原来 A、B 两个宏块中的偶数行像素组成,称为低场宏块。
帧宏块对的构成
![宏块与宏块对 - 加菲 - . 宏块与宏块对 - 加菲 - .](http://img.ph.126.net/CbSQkc66aCNtrkfRC_v4CA==/2544815264457908718.jpg)
场宏块对的构成
![宏块与宏块对 - 加菲 - . 宏块与宏块对 - 加菲 - .](http://img.ph.126.net/4kOqd8GiwbS5yOF0htVe1w==/1166150828529116053.jpg)
采用MBAFF与不采用MBAFF的CIF图像前4行宏块编号情况对比
![宏块与宏块对 - 加菲 - . 宏块与宏块对 - 加菲 - .](http://img.ph.126.net/tu-9NMVlS1wGNT5pqNJNNQ==/1024850390220366285.jpg)
再论“宏块”与“宏块对”
一幅图像编码可以分为三种:非 MBAFF 帧、场、MBAFF 帧。
一幅图像中宏块的存在方式有两种:
1、图像中的所有宏块以单个宏块的方式独立存在。也就是上面第三个图中非宏块对的情况。
2、图像中的所有宏块都是两两成对出现,上下相邻的两个为一对。也就是上面第三个图中宏块对的情况。
第一种宏块存在方式出现在非 MBAFF 帧图像(可以称为普通帧)和场图像中,第二种宏块存在方式出现在 MBAFF 帧图像中
第二种宏块存在方式又分为两种:帧宏块对(上面第一个图)和场宏块对(上面第二个图)
![宏块与宏块对 - 加菲 - . 宏块与宏块对 - 加菲 - .](http://img.ph.126.net/pEWjO8QriqM0Kt5qUGJwNw==/2509349417392365833.jpg)
很受启发,这就可以解释encode_one_slice()中的各中情况了
MBAFF 只存在帧图像中,场图像中没有 MBAFF
“帧的宏块对和场的宏块对”应该是“帧宏块对和场宏块对”,不能加“的”字,加了“的”字就是两个概念了。编号顺序没有区别。