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

Структура DXVA_MBctrl_I_OffHostIDCT_1 отправляется один раз для каждого макроблока декодером узла в ускоритель, чтобы указать команды управления макроблоком для изображений внутри 4:2:0 при использовании IDCT вне узла.

Синтаксис

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;

Члены

wMBaddress

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

wMBtype

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

Биты Описание
от 15 до 12 MvertFieldSel_3 (бит 15, самый значительный бит) через MvertFieldSel_0 (бит 12)
Должен равняться нулю.
11 Зарезервированный бит
Должен равняться нулю.
10 HostResidDiff
Указывает, отправляются ли декодированные блоки остатка пространственного домена или коэффициенты преобразования для idCT вне узла для текущего макроблока.
Флаг HostResidDiff в этой структуре всегда равен нулю. Этот флаг должен быть равен нулю, если параметр bConfigResidDiffHost равен нулю. Этот флаг должен иметь значение 1, если параметр bConfigResidDiffAccelerator равен нулю. Элементы bConfigResidDiffHost и bConfigResidDiffAccelerator содержатся в структуре DXVA_ConfigPictureDecode .
9 и 8 MotionType
Это не относится к изображениям внутри. Оба бита должны быть равны нулю.
7 и 6 MBscanMethod
Указывает метод сканирования команды управления макроблоком. Значение должно быть равно bPicScanMethod, если значение bPicScanFixed равно 1.
Если параметр bConfigHostInverseScan равен нулю, MBscanMethod имеет одно из следующих значений:
  • Нулевое зигзагное сканирование (MPEG-2 рис. 7-2)
  • 1 âˆ' альтернативная вертикальная проверка (MPEG-2 рис. 7-3)
  • 2 âˆ' альтернативно-горизонтальное сканирование (H.263 рис. I.2, часть a)
Если значение bConfigHostInverseScan равно 1, MBscanMethod равно 3, что является произвольным сканированием с абсолютным адресом коэффициента. bPicScanMethod и bPicScanFixed являются членами DXVA_PictureParameters . bConfigHostInverseScan является членом DXVA_ConfigPictureDecode.
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

wPatternCode

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

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

bNumCoef[DXVA_NumBlocksPerMB_420]

Каждое значение в массиве bNumCoef указывает количество коэффициентов в буфере данных остаточной разницы для каждого блока i макроблока.

Индекс массива i — это индекс блока в макроблоке, как указано в видео MPEG-2 Рис. 6-10, 6-11 и 6-12 (порядок растрового сканирования для Y, за которым следует Cb и Cr).

Этот элемент используется, только если флаг HostResidDiff (бит 10 в wMBtype) равен нулю, а параметр bChromaFormat равен 1 (4:2:0). При использовании в форматах 4:2:2 или 4:4:4 размер типичных команд управления макроблоком будет увеличиваться после критической границы выравнивания памяти. В результате бит TCoefEOB в структуре DXVA_TCoefSingle используется для определения количества коэффициентов в каждом блоке в случаях, отличных от 4:2:0.

Цель bNumCoef — указать количество данных, присутствующих для каждого блока в буфере данных остаточной разницы, выраженное как количество имеющихся коэффициентов. Если элемент bConfig4GroupedCoefsструктуры DXVA_ConfigPictureDecode равен 1, bNumCoef может содержать либо фактическое число коэффициентов, отправленных для блока, либо значение, округленное до кратного четырем. Данные для этих коэффициентов находятся в буфере остаточной разницы в том же порядке.

Комментарии

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

Требования

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

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

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle