宏块控制命令缓冲区

解码的图片包含一个或多个宏块控制命令缓冲区, (如果它不包含位流缓冲区) 。 每个宏块的解码过程仅在宏块控制命令缓冲区中 () 一次指定。

对于每个宏块控制命令缓冲区,都有相应的残差块数据缓冲区,其中包含同一组宏块的数据。 如果发送了一个或多个 解除阻止筛选器控制缓冲区 ,则每个解除阻止筛选器控制缓冲区中的宏块集与相应宏块控件中的宏块集和剩余差异块数据缓冲区中的宏块集相同。

图片的处理要求在每个宏块的运动预测之前添加残差数据。 可通过以下两种方式之一实现图片解码:

  • 首先在宏块控制命令缓冲区中处理运动预测命令,然后从未压缩的目标图面读取回运动补偿的预测数据,同时处理残差数据缓冲区。

  • 以协调方式处理 macroblock 控制命令缓冲区和残差数据缓冲区。 在将结果写入未压缩的目标图面之前,将残差数据缓冲区中指定的残差数据添加到预测。

宏块控制命令和每个宏块的残差数据仅影响该宏块中的矩形区域。

宏块控制命令缓冲区中宏块控制命令的总数由相应DXVA_BufferDescription结构的 dwNumMBsInBuffer 成员指定。

残差数据缓冲区中数据的数量和类型由相应宏块控制命令的 wPatternCodewPC_OverflowbNumCoef 成员确定。

下图显示了宏块控制命令缓冲区与残差数据缓冲区之间的关系。

显示宏块控制命令缓冲区与剩余差异数据缓冲区之间的关系的关系图。

如果 DXVA_ConfigPictureDecode 结构的 bConfigMBcontrolRasterOrder 成员等于 1,则以下表达式将应用于上图,其中 i 是 macroblock 控制命令缓冲区中宏块的索引。

MB 控制命令缓冲区与剩余差异数据缓冲区之间的关系的公式。