宏块控制命令缓冲区

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

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

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

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

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

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

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

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

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

diagram illustrating the relationship between the macroblock control command buffer and the residual difference data buffer.

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

diagram illustrating the relationship between the mb control command buffer and residual difference data buffer.