структура 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 поле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
Указывает количество пропущенных макроблоков, создаваемых после текущего макроблока, и указывает расположение данных остаточной разницы для блоков текущего макроблока. Этот элемент содержит две переменные: 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, а затем 4:2:0 блоков Cb в порядке растрового сканирования, за которым следует 4:2:0 блоков Cr, а затем 4:2:2 блоков Cb, а затем 4:2:2 блоков Cr, а затем 4:4 блоков Cb, за которым следует 4:4:4 блока Cr). Данные для закодированных блоков (эти блоки с битом (11i) равны 1) находятся в буфере остаточного кодирования в том же порядке индексирования (увеличение i). Для данных 4:2:0 MPEG-2 значение wPatternCode соответствует перемещению декодированного значения CBP (закодированного шаблона блока) влево на шесть битовых позиций (эти нижние битовые позиции используются для форматов 4:2 и 4:4:4).
Если bConfigSpatialResidInterleaved элемент структуры DXVA_ConfigPictureDecode равен 1, различия остатков на основе узла отправляются в chroma-interleaved форме, соответствующей используемому формату пикселей YUV. В этом случае каждая пара блоков Cb и пространственно соответствующая пара блоков Cr рассматривается как единая единица структуры разницы остатков. Это не изменяет значение или значение wPatternCode, но подразумевает, что оба члена каждой пары блоков данных Cb и Cr отправляются всякий раз, когда любой из этих блоков данных имеет соответствующий битовый набор в wPatternCode. Если бит в wPatternCode для определенного блока данных равен нулю, соответствующие значения данных остаточной разницы должны отправляться как ноль, когда это связывание требует отправки блока данных остаточной разницы для блока с wPatternCode равно нулю.
wPC_Overflow
Должно быть равно нулю.
dwReservedBits2
Зарезервированные биты, используемые для упаковки и выравнивания. Должно быть равно нулю.
Замечания
Пропущенные макроблоки не используются внутри рисунков, поэтому переменная MBskipsFollowing должна быть нулевой. Переменная MBdataLocation должна быть нулевой для первого макроблока в буфере команд управления макроблоком. Дополнительные сведения о том, как создаются пропущенные макроблоки, см. в создании пропущенных макроблоков.
Требования
Требование | Ценность |
---|---|
заголовка | dxva.h (include Dxva.h) |