структура 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 поле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) |