структура 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 имеет одно из следующих значений:
|
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) |