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


структура 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 является одним из следующих значений:
  • Ноль ∠' zigzag scan (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 поле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

wPatternCode

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

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

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 (include Dxva.h)

См. также

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle