1 MapUnits

  在FMO(Flexible Macroblock ordering)时,从宏块到条带组的映射是以MapUnits为基本单位,MapUnits可能为宏块,也可能是上下两个宏块(见下文)。

2 在标准中的MapUnits

  H264中的MapUnits-LMLPHP

  这里我翻译一下大概意思是:

    条带组映射单元以下面的方式确定:

    - 如果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 := 上下紧挨着的两个宏块组成的单元

  

05-04 08:52