структура 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 значение FieldResidual должно быть равно нулю, если флаг 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, за которым следуют блоки Cb в порядке растрового сканирования, затем 4:2:0 блоки Cr, 4:2:2 блоки Cb, 4:2:2 блоки Cr, 4:4:4 блоки Cb, а затем 4:4:4 блоки Cr). Данные для закодированных блоков (блоки с битом (11i) равны 1) находятся в буфере кодирования остатков в том же порядке индексирования (увеличение i). Для данных MPEG-2 4:2:0 значение wPatternCode соответствует смещению декодированного значения CBP (закодированного шаблона блока) влево на шесть битов (нижние позиции бита, используемые для форматов хрома 4:2:2 и 4:4:4).

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

wPC_Overflow

Должен равняться нулю.

dwReservedBits2

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

Комментарии

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

Требования

Требование Значение
Заголовок dxva.h (включая Dxva.h)

См. также раздел

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_PictureParameters

DXVA_TCoefSingle