Поделиться через


структура DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)

Структура DXVA_MBctrl_I_HostResidDiff_1 отправляется один раз для каждого макроблока декодером узла в акселератор, чтобы указать команды управления макроблоком для внутри рисунка.

Синтаксис

typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  WORD  wPC_Overflow;
  DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_1;

Члены

wMBaddress

Задает адрес макроблока текущего макроблока в порядке сканирования растрового элемента. Примеры адресов макроблока см. в разделе адреса макроблоков.

wMBtype

Указывает тип обрабатываемого макроблока. Следующие биты определяют обработку макроблока.

Биты описание
От 15 до 12 MvertFieldSel_3 (бит 15, самый значительный бит) до MvertFieldSel_0 (бит 12)
Задает выбор вертикального поля для соответствующих векторов движения, отправленных позже в команде элемента управления макроблока. Для движения на основе кадра с структурой рисунка кадра (например, для H.261 и H.263) эти биты должны быть равны нулю. Биты в MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 и MvertFieldSel_3 соответствуют битам motion_vertical_field_select[r][s] в разделе 6.3.17.2 MPEG-2.
11 зарезервированный бит
Должно быть равно нулю.
10 HostResidDiff
Указывает, отправляются ли декодированные блоки остаточного значения пространственного домена или отправляются ли коэффициенты преобразования для внеузлового идентификатора IDCT для текущего макроблока.
HostResidDiff всегда равен 1 в этой структуре. Этот флаг должен быть равен нулю, если bConfigResidDiffHost равно нулю. Этот флаг должен иметь значение 1, если bConfigResidDiffAccelerator равно нулю. Элементы bConfigResidDiffHost и bConfigResidDiffAccelerator содержатся в структуре DXVA_ConfigPictureDecode.
9 и 8 MotionType
Должно быть равно нулю.
7 и 6 MBscanMethod
Эти биты не имеют смысла и должны иметь значение нулю.
5 FieldResidual
Указывает, используют ли блоки остаточного различия структуру IDCT поля, как указано в MPEG-2.
Должно быть 1, если элемент bPicStructure DXVA_PictureParameters равен 1 или 2. При использовании для MPEG-2 полеResidual должно быть равно нулю, если флаг frame_pred_frame_DCT в синтаксисе MPEG-2 равен 1, и должен быть равен dct_type переменной синтаксиса MPEG-2, если dct_type присутствует для макроблока.
4 H261LoopFilter
Должно быть равно нулю.
3 Motion4MV
Должно быть равно нулю.
2 MotionBackward
Должно быть равно нулю.
1 MotionForward
Должно быть равно нулю.
0 IntraMacroblock
Должно быть 1.

dwMB_SNL

Указывает количество пропущенных макроблоков, создаваемых после текущего макроблока, и указывает расположение данных остаточной разницы для блоков текущего макроблока. Этот элемент содержит две переменные: MBskipsFollowing в наиболее значимых 8 битах и MBdataLocation в наименее значимых 24 битах. MBskipsFollowing указывает количество пропущенных макроблоков, создаваемых после текущего макроблока. MBdataLocation — это индекс в буфер данных блока остатков. Этот индекс указывает расположение данных остаточной разницы для блоков текущего макроблока, выраженных как 32 бита.

wPatternCode

Указывает, отправляются ли данные остаточной разницы для каждого блока в макроблоке. На внутри рисунке данные остаточной разницы отправляются для каждого блока в макроблоке. Биты в wPatternCode, ссылающиеся на все блоки текущего макроблока, должны быть 1 в этой структуре.

Bit (11-i) wPatternCode (где бит нулю является наименее значимым) указывает, отправляются ли данные остаточной разницы i, где i является индексом блока в макроблоке, как указано в цифрах MPEG-2 6-10, 6-11 и 6-12 (порядок сканирования растра для Y, а затем 4:2:0 блоков Cb в порядке растрового сканирования, за которым следует 4:2:0 блоков Cr, а затем 4:2:2 блоков Cb, а затем 4:2:2 блоков Cr, а затем 4:4 блоков Cb, за которым следует 4:4:4 блока Cr). Данные для закодированных блоков (эти блоки с битом (11i) равны 1) находятся в буфере остаточного кодирования в том же порядке индексирования (увеличение i). Для данных 4:2:0 MPEG-2 значение wPatternCode соответствует перемещению декодированного значения CBP (закодированного шаблона блока) влево на шесть битовых позиций (эти нижние битовые позиции используются для форматов 4:2 и 4:4:4).

Если bConfigSpatialResidInterleaved элемент структуры DXVA_ConfigPictureDecode равен 1, различия остатков на основе узла отправляются в chroma-interleaved форме, соответствующей используемому формату пикселей YUV. В этом случае каждая пара блоков Cb и пространственно соответствующая пара блоков Cr рассматривается как единая единица структуры разницы остатков. Это не изменяет значение или значение wPatternCode, но подразумевает, что оба члена каждой пары блоков данных Cb и Cr отправляются всякий раз, когда любой из этих блоков данных имеет соответствующий битовый набор в wPatternCode. Если бит в wPatternCode для определенного блока данных равен нулю, соответствующие значения данных остаточной разницы должны отправляться как ноль, когда это связывание требует отправки блока данных остаточной разницы для блока с wPatternCode равно нулю.

wPC_Overflow

Должно быть равно нулю.

dwReservedBits2

Зарезервированные биты, используемые для упаковки и выравнивания. Должно быть равно нулю.

Замечания

Пропущенные макроблоки не используются внутри рисунков, поэтому переменная MBskipsFollowing должна быть нулевой. Переменная MBdataLocation должна быть нулевой для первого макроблока в буфере команд управления макроблоком. Дополнительные сведения о том, как создаются пропущенные макроблоки, см. в создании пропущенных макроблоков.

Требования

Требование Ценность
заголовка dxva.h (include Dxva.h)

См. также

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_PictureParameters

DXVA_TCoefSingle