Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура DXVA_MBctrl_P_HostResidDiff_1 отправляется один раз для каждого макроблока декодером узла в акселератор, чтобы указать команды управления макроблоком для большинства случаев, не относящихся к рисункам, при использовании idCT на основе узла.
Синтаксис
typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_HostResidDiff_1;
Члены
wMBaddress
Задает адрес макроблока текущего макроблока в порядке сканирования растрового элемента. Примеры адресов макроблока см. в адреса макроблока.
wMBtype
Указывает тип обрабатываемого макроблока. Следующие биты определяют содержимое wMBtype.
Биты | описание |
---|---|
От 15 до 12 | MvertFieldSel_3 (бит 15, самый значительный бит) до MvertFieldSel_0 (бит 12) Задает выбор вертикального поля для соответствующих векторов движения, отправленных позже в команде элемента управления макроблока. Для движения на основе кадра с структурой рисунка кадра (например, для H.261 и H.263) эти биты должны быть равны нулю. Использование этих битов совпадает с тем, что указано для соответствующих битов в разделе 6.3.17.2 MPEG-2. |
11 | Зарезервированный бит. Должно быть равно нулю. |
10 |
HostResidDiff Указывает, отправляются ли декодированные блоки остаточного значения пространственного домена или отправляются ли коэффициенты преобразования для внеузлового идентификатора IDCT для текущего макроблока. Флаг HostResidDif всегда равен 1 в этой структуре. Этот флаг должен быть равен нулю, если bConfigResidDiffHost равно нулю. Этот флаг должен иметь значение 1, если bConfigResidDiffAccelerator равно нулю. |
9 и 8 |
MotionType Указывает тип движения на рисунке. Например, для движения на основе кадра со структурой рисунка кадра (как в H.261), бит 9 должен быть 1, а бит 8 должен быть равен нулю. Использование этих битов соответствует непосредственно использованию frame_motion_type или field_motion_type битов в разделе 6.3.17.1 и Таблицах 6-17 и 6-18 видео MPEG-2, когда эти биты присутствуют в MPEG-2. Использование этих битов более подробно описано в следующем разделе примечания. |
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 Указывает, активен ли фильтр цикла H.261 (раздел 3.2.3 H.261) для текущего прогноза макроблока. Фильтр цикла H.261 — это разделимый фильтр 1/4, 1/2, 1/4, примененный как по горизонтали, так и по вертикали ко всем шести блокам в макроблоке H.261, за исключением блочных краев, где один из касаний будет выпадать за пределы блока. В таких случаях фильтр изменяется на коэффициенты 0, 1, 0. Полная арифметическая точность сохраняется с округлением до 8-разрядных целых чисел в выходных данных процесса фильтрации 2-D (полу целочисленное или более высокое значение округляется). |
3 |
Motion4MV Переменная, указывающая, что движение вперед использует отдельный вектор движения для каждого из четырех блоков света в макроблоке, как используется в приложениях H.263 F и J. Motion4MV, должно быть равно нулю, если MotionForward равен нулю или если элемент bPic4MVallowed DXVA_PictureParameters равен нулю. |
2 |
MotionBackward Используется таким образом для соответствующей переменной macroblock_motion_backward в MPEG-2. Если элемент bPicBackwardPrediction DXVA_PictureParameters равен нулю, функция MotionBackward должна быть нулевой. Использование этого бита более подробно описано в следующем разделе "Примечания". |
1 |
MotionForward Используется для соответствующей переменной macroblock_motion_forward в MPEG-2. Использование этого бита более подробно описано в следующем разделе "Примечания". |
0 |
IntraMacroblock Указывает, что макроблок закодирован как внутри, и для текущего макроблока не используются векторы движения. Соответствует macroblock_intrain MPEG-2. Использование этого бита более подробно описано в следующем разделе "Примечания". |
dwMB_SNL
Указывает количество пропущенных макроблоков, создаваемых после текущего макроблока, и указывает расположение данных остаточной разницы для блоков текущего макроблока. Этот элемент содержит две переменные: MBskipsFollowing в наиболее значимых 8 битах и MBdataLocation в наименее значимых 24 битах. MBskipsFollowing указывает количество пропущенных макроблоков, создаваемых после текущего макроблока. MBdataLocation — это индекс в буфер данных блока остатков. Этот индекс указывает расположение данных остаточной разницы для блоков текущего макроблока, выраженных как 32 бита.
wPatternCode
Указывает, отправляются ли данные остаточного различия для каждого блока в текущем макроблоке.
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). Данные для закодированных блоков (эти блоки имеют бит (11-i) равны 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
Указывает, какие блоки макроблока используют данные остаточной разницы переполнения.
При использовании декодирования остатков на основе узла с bPicOverflowBlocks член DXVA_PictureParameters равным 1 и IntraMacroblock равны нулю (метод переполнения 8–8), wPC_Overflow содержит код шаблона блоков переполнения. (Код шаблона указывается таким же образом, как для wPatternCode.) Данные для закодированных блоков переполнения (эти блоки с битом (11-i) равны 1) находятся в буфере остаточного кодирования в том же порядке индексирования (увеличение i).
dwReservedBits2
Зарезервированные биты, используемые для упаковки и выравнивания. Должно быть равно нулю.
MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]
Массив, содержащий значение векторов движения для макроблока, каждый вектор движения представлен структурой DXVA_MVvalue.
Замечания
Каждый пропущенный макроблок, указанный MBskipsFollowing , должен быть создан математически эквивалентно добавочному значению wMBaddress, а затем повторять ту же команду управления макроблоком.
Содержимое команды управления макроблоком с ненулевое значение для MBskipsFollowing эквивалентно (за исключением значения MBskipsFollowing) содержимому первой серии пропущенных макроблоков. Таким образом, каждый раз, когда MBskipsFollowing не равно нулю, следующие элементы структуры и переменные должны быть равны нулю: Motion4MV, IntraMacroblock, wPatternCodeи wPC_Overflow. Затем каждый последующий пропущенный макроблок создается так же, как и первый, за исключением увеличения значения wMBaddress.
MBdataLocation должно быть равно нулю для первого макроблока в буфере команд управления макроблоком. Для макроблоков, отличных от первого макроблока в буфере команд управления макроблоком, MBdataLocation может содержать любое значение, если wPatternCode равно нулю. Если wPatternCode равно нулю, декодеры рекомендуется, но не требуются для задания этого значения либо нулю, либо к тому же значению, что и в следующей команде управления макроблоком.
Дополнительные сведения о том, как создаются пропущенные макроблоки, см. в создании пропущенных макроблоков.
Допустимые сочетания IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSelи MVector отображаются в таблицах в первой части структуры команд управления макроблока.
Требования
Требование | Ценность |
---|---|
заголовка | dxva.h (include Dxva.h) |