1 MapUnits
在FMO(Flexible Macroblock ordering)时,从宏块到条带组的映射是以MapUnits为基本单位,MapUnits可能为宏块,也可能是上下两个宏块(见下文)。
2 在标准中的MapUnits
这里我翻译一下大概意思是:
条带组映射单元以下面的方式确定:
- 如果frame_mbs_only_flag==0 并且 mb_adptive_frame_filed_flag ==1 并且编码图像是一个帧图像,这时条带组映射单元是宏块对单元(分场宏块对与帧宏块对)
- 否则,如果frame_mbs_only_flag == 1 或者 编码图像是场图像时,这时条带组映射单元是宏块单元
-- 否则(frame_mbs_only_flag==0 并且 mb_adptive_frame_filed_flag ==0 并且编码图像是一个帧图像),条带组单元是就像一个MBAFF帧图像的帧宏块对一样的
上下紧挨着的两个宏块组成的单元(与宏块对并不完全一样,宏块对编码时以锯齿方式扫描,而前述两个宏块组成的单元编码时依然采用光栅扫描方式)。
3 对标准整理后的伪代码
if(非场拼接的帧图像编码 或 场图像编码)
MapUnits := 宏块单元
else //上下两场拼成的帧图像编码
if(MBAFF)
MapUnits := 宏块对单元
else
MapUnits := 上下紧挨着的两个宏块组成的单元