структура 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) |