структура DXVA_PictureParameters (dxva.h)
Структура DXVA_PictureParameters отправляется декодером узла в акселератор, чтобы предоставить параметры уровня рисунка сжатого рисунка для декодирования на акселераторе.
Синтаксис
typedef struct _DXVA_PictureParameters {
WORD wDecodedPictureIndex;
WORD wDeblockedPictureIndex;
WORD wForwardRefPictureIndex;
WORD wBackwardRefPictureIndex;
WORD wPicWidthInMBminus1;
WORD wPicHeightInMBminus1;
BYTE bMacroblockWidthMinus1;
BYTE bMacroblockHeightMinus1;
BYTE bBlockWidthMinus1;
BYTE bBlockHeightMinus1;
BYTE bBPPminus1;
BYTE bPicStructure;
BYTE bSecondField;
BYTE bPicIntra;
BYTE bPicBackwardPrediction;
BYTE bBidirectionalAveragingMode;
BYTE bMVprecisionAndChromaRelation;
BYTE bChromaFormat;
BYTE bPicScanFixed;
BYTE bPicScanMethod;
BYTE bPicReadbackRequests;
BYTE bRcontrol;
BYTE bPicSpatialResid8;
BYTE bPicOverflowBlocks;
BYTE bPicExtrapolation;
BYTE bPicDeblocked;
BYTE bPicDeblockConfined;
BYTE bPic4MVallowed;
BYTE bPicOBMC;
BYTE bPicBinPB;
BYTE bMV_RPS;
BYTE bReservedBits;
WORD wBitstreamFcodes;
WORD wBitstreamPCEelements;
BYTE bBitstreamConcealmentNeed;
BYTE bBitstreamConcealmentMethod;
} DXVA_PictureParameters, *LPDXVA_PictureParameters;
Члены
wDecodedPictureIndex
Указывает буфер целевого кадра для декодированных макроблоков.
wDeblockedPictureIndex
Указывает буфер целевого кадра для деблокированного выходного рисунка при bPicDeblocked равно 1. Этот элемент не имеет значения и должен быть нулевым, если bPicDeblocked равно нулю. Этот элемент может совпадать с wDecodedPictureIndex.
wForwardRefPictureIndex
Указывает индекс буфера кадра, используемый в качестве эталонного рисунка для прогнозирования текущего рисунка. Не должно совпадать с wDecodedPictureIndex. Этот элемент должен быть 0xFFFF, если bPicIntra равно 1.
wBackwardRefPictureIndex
Указывает индекс буфера кадра, используемый в качестве эталонного рисунка для обратного прогнозирования текущего рисунка. Этот элемент не должен совпадать с wDecodedPictureIndex если используется прогноз движения обратной ссылки. Этот элемент должен быть 0xFFFF, если bPicBackwardPrediction равно нулю.
wPicWidthInMBminus1
Задает ширину текущего рисунка в единицах макроблоков, минус 1. Ширина рисунка в макроблоках производна путем добавления 1 в wPicWidthInMBminus1.
wPicHeightInMBminus1
Задает высоту текущего рисунка в единицах макроблоков, минус 1. Высота рисунка в макроблоках производна путем добавления 1 к wPicHeightInMBminus1.
bMacroblockWidthMinus1
Указывает ширину целевого свечения макроблока минус 1. Это равно 15 для MPEG-1, MPEG-2, H.263 и MPEG-4.
bMacroblockHeightMinus1
Указывает высоту целевого свечения макроблока минус 1. Это равно 15 для MPEG-1, MPEG-2, H.261, H.263 и MPEG-4.
bBlockWidthMinus1
Задает ширину блока остаточной разницы минус 1. Это равно 7 для MPEG-1, MPEG-2, H.261, H.263 и MPEG-4. Это значение 7, если bConfig4GroupedCoefs элемент структуры DXVA_ConfigPictureDecode равен 1. Блоки разницы остатков в макроблоке отправляются в порядке, указанном в формате MPEG-2 рис. 6-10, 6-11 и 6-12 (порядок сканирования растра для Y, а затем все блоки 4:2:0 Cb в порядке растрового сканирования, а затем 4:2:0 блоков Cr, а затем 4:2 блоки Cb, а затем 4:2 блоки Cr, а затем 4:4:4 блоков Cb, за которым следует 4:4:4 блока Cr). Производный термин WT формируется путем добавления 1 в bBlockWidthMinus1.
bBlockHeightMinus1
Задает высоту блока остаточной разницы, минус 1. Это равно 7 для MPEG-1, MPEG-2, H.261, H.263 и MPEG-4. Это значение 7, если bConfig4GroupedCoefs равно 1. Производный термин HT формируется путем добавления 1 в bBlockHeightMinus1.
bBPPminus1
Указывает количество битов на пиксель для значений примера видео, минус 1. Это по крайней мере 7 (указывающее 8-разрядные пиксели). Это равно 7 для MPEG-1, MPEG-2, H.261 и H.263. Большее количество битов на пиксель поддерживается в некоторых операционных режимах MPEG-4. Производный термин, называемый BPP, формируется путем добавления 1 к bBPminus1.
bPicStructure
Указывает, является ли текущий рисунок верхним полем (значение 1), нижнее поле (значение 2) или изображение кадра (значение 3). При прогрессивном сканировании структурированного фрейма кодирование, например в H.261, bPicStructure равно 3. Производное значение PicCurrentField определяется как нулевое, если bPicStructure равно 2 (нижнее поле). В этом случае это значение равно 1. Этот член имеет то же значение, что и переменная picture_structure , определенная в разделе 6.3.10 и Таблице 6-14 MPEG-2 (H.262).
bSecondField
Указывает, является ли поле структурированным полем программирования (если bPicStructure равно 1 или 2), текущее поле является вторым полем рисунка. Это используется для определения того, является ли поле противоположного четности, используемое в качестве ссылки для линий противоположного четности для прогнозирования компенсации движения, является полем противоположного четности эталонного рисунка или поля противоположного четности текущего рисунка. Если bSecondField равен 1, текущее поле является вторым полем рисунка, а поле, используемое в качестве ссылки на линии противоположного четности для компенсации движения, являются линиями противоположного четности текущего рисунка. (В обоих случаях поле, используемое в качестве ссылки для одной линии четности для компенсации движения, являются одинаковыми линиями четности эталонного рисунка.) В противном случае bSecondField равно нулю.
bPicIntra
Указывает, требуется ли прогноз с компенсацией движения для этой картины. Если bPicIntra равно 1, все макроблоки отправляются с DXVA_MBctrl_I_OffHostIDCT_1 или DXVA_MBctrl_I_HostResidDiff_1 структурой команд управления макроблока, в которой флаг IntraMacroblock равен 1. То есть для рисунка не выполняется прогноз с компенсацией движения. В противном случае некоторые макроблоки рисунка могут иметь параметр IntraMacroblock команды управления макроблока равным нулю, а структура команд управления макроблоком будет использовать структуру DXVA_MBctrl_P_HostResidDiff_1 или структуру DXVA_MBctrl_P_OffHostIDCT_1.
bPicBackwardPrediction
Указывает, могут ли какие-либо макроблоки текущего рисунка включать обратное прогнозирование. Если bPicIntra равно 1, bPicBackwardPrediction должно быть равно нулю. Если bPicBackwardPrediction равно нулю, MotionBackward должно быть равно нулю во всех командах управления макроблоком рисунка (в пределах каждой DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 или DXVA_MBctrl_P_OffHostIDCT_1 структуры). Если bPicBackwardPrediction равно 1, некоторые макроблоки рисунка могут иметь MotionBackward равно 1.
bBidirectionalAveragingMode
Указывает метод округления для объединения плоскостей прогнозирования в двунаправленной компенсации движения (используется для изображений B и двойного простого движения). Нулевое значение указывает, что MPEG-1 и MPEG-2 округляются в среднем (при этом значения между двумя целыми числами округляются вверх до следующего более высокого целого числа), а значение 1 указывает на усечение H.263 усеченное усечение (в котором значения по полпути между двумя целыми числами округляются вниз до следующего нижнего целого числа). bBidirectionalAveragingMode должно быть равно нулю, если не требуется двунаправленное усреднение.
bMVprecisionAndChromaRelation
Этот элемент указывает точность векторов движения сияния и то, как векторы движения хрома являются производными от векторов движения сияния.
В следующей таблице перечислены значения для этого элемента с указанной точностью вектора движения света и описанием того, как производные векторы движения хрома.
значение | описание |
---|---|
0 | Векторы движения сияния имеют пол-выборку точности. Векторы движения хрома являются производными от векторов движения света в соответствии с MPEG-2 (H.262). |
1 | Векторы движения сияния имеют пол-выборку точности. Векторы движения хрома являются производными от векторов движения сияния в соответствии с H.263. |
2 | Векторы движения сияния имеют полную выборку точности. Векторы движения хрома являются производными от векторов движения света в соответствии с H.261 (деление на два и усечение до нуля до полного образца значений). |
3 | Скрытный. |
bChromaFormat
Влияет на количество блоков ошибок прогнозирования, ожидаемых акселератором. Эта переменная определена в MPEG-2 (H.262). Для mpeg-1, MPEG-2 Main Profile, H.261 и H.263 bitstreams это значение всегда должно иметь значение 1, указывающее формат 4:2:0. Если значение 2, это означает 4:2:2, а если значение 3, указывает выборку 4:4:4. Этот элемент должен быть равен 1, если bConfig4GroupedCoefs член DXVA_ConfigPictureDecode равен 1 (так как bConfig4GroupedCoefs операции не включает указание EOB, необходимое в коэффициентах данных в форматах 4:2 и 4:4:4.4).
Заметка
Горизонтальное хрома слегка отличается между H.261, H.263 и MPEG-1 и MPEG-2 и MPEG-4. Предполагается, что эта разница достаточно мала, чтобы игнорировать.
bPicScanFixed
При использовании обработки идентификатора IDCT на основе акселератора блоков остаточной разницы значение 1 для этого флага указывает, что метод обратного сканирования одинаков для всех макроблоков на рисунке. Значение нуля указывает, что это не так. Этот элемент должен иметь значение 1, если элемент bConfigHostInverseScan равен 1 или если элемент bConfigResidDiffAccelerator равно нулю в DXVA_ConfigPictureDecode.
bPicScanMethod
Указывает фиксированный метод обратного сканирования рисунка при bPicScanFixed равно 1. Если bPicScanFixed равно нулю, этот член не имеет значения и должен иметь значение нуля.
Если элемент DXVA_ConfigPictureDecode bConfigHostInverseScan равен нулю, метод сканирования, определенный этим элементом, может быть одним из следующих элементов.
bPicScanMethod | Метод сканирования |
---|---|
0 | Зигзаг сканирование (MPEG-2) |
1 | Альтернативная вертикальная проверка (MPEG-2) |
2 | Альтернативное горизонтальное сканирование (H.263) |
Если элемент bConfigHostInverseScanDXVA_ConfigPictureDecode равен 1, метод сканирования, определенный bPicScanMethod, должен быть задан следующим образом.
bPicScanMethod | Метод сканирования |
---|---|
3 | Произвольное сканирование с абсолютным адресом коэффициента. |
bPicReadbackRequests
Указывает, выдаются ли запросы обратного чтения для текущего рисунка. Значение 1 указывает, что запросы обратного чтения присутствуют, а значение нуля указывает, что они не являются. Запросы обратного чтения указывают, что значения макроблоков считываются обратно в окончательно декодированном и деблокированном рисунке (если деблокирование применяется с wDeblockedPictureIndex равно wDecodedPictureIndex).
bRcontrol
Определяет метод округления, используемый для компенсации движения половины образца. Эта переменная определена в разделе H.263 6.1.2. Значение нуля указывает метод округления половины выборки, найденный в MPEG-1, MPEG-2 и первой версии H.263. Значение 1 указывает метод округления, который включает в себя усреднение предвзятости, которые можно выбрать в некоторых необязательных режимах H.263 и MPEG-4. Это бессмысленно для H.261, потому что H.261 не имеет полузаборной компенсации движения. Оно должно быть равно нулю для всех битовых потоков MPEG-1 и MPEG-2, чтобы соответствовать оператору округления, определенному этими стандартами.
bPicSpatialResid8
Указывает, как блоки разности пространственного домена отправляются в акселератор с узла. Значение 1 указывает, что блоки разности пространственных доменов для декодирования остаточных различий на основе узлов можно отправлять с помощью 8-разрядных примеров, а значение нуля указывает, что они не могут.
Этот элемент должен быть равен нулю, если bConfigResidDiffHost члена DXVA_ConfigPictureDecode равно нулю или если BPP больше 8. Этот член должен иметь значение 1, если BPP равно 8, bPicIntra равно 1 и bConfigResidDiffHost равно 1. Этот элемент должен быть 1, если элемент bConfigSpatialResid8 члена DXVA_ConfigPictureDecode равен 1.
Если этот элемент равен 1, пространственный домен внутри макроблоков отправляется как 8-разрядные значения (подписанные или неподписанные, как определено bConfigIntraResidUnsigned член DXVA_ConfigPictureDecode), а различия между макроблоками, не являющихся доменными, неинтрасными, отправляются как подписанные 8-разрядные значения разницы относительно некоторого прогноза, компенсируемого движением.
Элемент bPicSpatialResid8 отличается от члена bConfigSpatialResid8 DXVA_ConfigPictureDecode в том, что это указание для определенного рисунка, а не глобальное указание для всей последовательности видео. В некоторых случаях, например в внутри рисунка с BPP равно 8, bPicSpatialResid8 будет 1, даже если bConfigSpatialResid8 может быть нулевым.
bPicOverflowBlocks
Указывает, отправляются ли блоки разности пространственного домена в акселератор с узла с помощью блоков переполнения. Значение 1 указывает, что блоки разности пространственного домена для декодирования остаточных различий на основе узла могут отправляться с помощью блоков переполнения. Значение нуля указывает, что блоки разности пространственного домена не отправляются с помощью блоков переполнения. Этот элемент должен быть равен нулю, если bConfigResidDiffHost равно нулю или если bConfigSpatialResid8 равно нулю или если BPP больше 8. Параметры bConfigResidDiffHost и bConfigSpatialResid8 являются членами DXVA_ConfigPictureDecode. bPicOverflowBlocks указывает, могут ли какие-либо блоки переполнения присутствовать для конкретного рисунка. На рисунке внутри BPP равно 8, bPicOverflowBlocks должны быть нулевыми, так как в этом случае блоки переполнения не требуются.
bPicExtrapolation
Указывает, разрешены ли векторы движения по границам рисунка, как указано в приложении H.263 В приложении D и MPEG-4. Для этого требуется либо выделение плоскостей рисунка, которые являются двумя макроблоками шире (один дополнительный макроблок слева и другой справа) и два макроблока выше (один дополнительный макроблок в верхней части и другой в нижней части), чем декодированные размеры рисунка, или вырезка адреса каждого отдельного пикселя доступа к границам рисунка. Адреса макроблоков в этой спецификации предназначены для макроблоков в интерьере рисунка, не включая заполнение.
bPicDeblocked
Указывает, отправляются ли команды деблокировки для этого рисунка для создания разблокированного выходного рисунка. Разблокированные выходные данные помещаются в буфер рисунка, указанный wDeblockedPictureIndex. Если bPicDeblocked равно 1, команды деблокировки отправляются и создается деблокированный кадр. Если bPicDeblocked равно нулю, команды деблокировки не отправляются и не создаются деблокированные рисунки.
bPicDeblockConfined
Указывает, ограничиваются ли буферы команд фильтра деблокированием операций фильтрации набором макроблоков, содержащихся в буфере команд фильтра деблокировки.
bPic4MVallowed
Указывает, разрешены ли четыре вектора движения вперед на макроблок, как и в приложениях H.263 F и J.
bPicOBMC
Указывает, работает ли компенсация движения для текущей картины с использованием перекрывающейся компенсации движения блока (OBMC), как указано в приложении H.263 В приложении F. Если bPic4MVallowed равно нулю.
bPicBinPB
Указывает, используются ли двунаправленные макроблоки в рисунке с помощью B-рисунка в компенсации движения кадров PB. Это ограничивает двунаправленную прогнозируемую область для каждого макроблока в регионе соответствующего макроблока в обратном эталонном рисунке, как указано в приложениях G и M H.263.
bMV_RPS
Указывает использование выделения векторного рисунка. Если значение bMV_RPS равно 1, это означает, что индекс эталонной картины отправляется для каждого вектора движения, а не только вперед и, возможно, индексов обратного движения для рисунка в целом. Если значение bMV_RPS равно 1, wForwardRefPictureIndex и wBackwardRefPictureIndex элементов не имеют значения и должны быть нулевыми.
bReservedBits
Это зарезервировано для упаковки и выравнивания. Должно быть равно нулю.
wBitstreamFcodes
Указывает вектор движения f_code значения, определенные в MPEG-2 для обработки необработанных битовых потоков. Каждое значение f_code принимает 4 бита. Эти значения упакованы в 16-разрядное слово следующим образом.
Биты | Описание |
---|---|
12–15 (наиболее значимые биты) | f_code[0][0]: горизонтальная f_code вперед |
От 8 до 11 | f_code[0][1]: вертикальная вертикальная f_code |
От 4 до 7 | f_code[1][0]: обратная горизонтальная f_code |
От 0 до 3 (наименее значимые биты) | f_code[1][1]: обратная вертикальная f_code |
Если bConfigBitstreamRaw элемент структуры DXVA_ConfigPictureDecode равен 1, wBitstreamFcodes содержит четыре значения вектора движения f_code. Если bConfigBitstreamRaw равно 1, а любой из четырех f_code значений не является ненужным или неуместным из-за структуры данных битового потока или из-за f_code значения, не необходимого в соответствующем синтаксисе битового кода видео (например, в H.261 или H.263), то каждое неуместное значение f_code 0xF.
Если элемент DXVA_ConfigPictureDecode структуры DXVA_ConfigPictureDecode bConfigBitstreamRaw равен нулю, wBitstreamFcodes имеет значение 0xFFFF (для всех значений f_code задано значение 0xF).
Заметка
Битовые потоки MPEG-1 предоставляют эти сведения в другой форме. Поэтому для битовых потоков MPEG-1 f_code[0][0] и f_code[0][1] равны forward_f_code MPEG-1 и f_code[1][0] и f_code[1][1][1] равны backward_f_code MPEG-1.
wBitstreamPCEelements
Если bConfigBitstreamRaw член DXVA_ConfigPictureDecode равен 1, этот элемент содержит набор флагов, необходимых для процесса декодирования битов mpeg-2 видео. Он не используется и должен быть нулевым, если bConfigBitstreamRaw равно нулю и для видео, отличного от MPEG-2. Биты в этом элементе определяются их соответствием с элементами bitstream расширения кодирования рисунков MPEG-2, как показано ниже.
Биты | Описание |
---|---|
14 и 15 | ВнутриDCprecision равно intra_dc_precision. |
12 и 13 | AnotherPicStructure равно picture_structure. Это должно быть равно члену bPicStructure этой структуры. |
11 | TopFieldFirst равно top_field_first. |
10 | FrameDCTprediction равно frame_pred_frame_dct. |
9 | СкрытыеMV равны concealment_motion_vectors. |
8 | QuantScaleType равно q_scale_type. |
7 | IntraVLCformat равно intra_vlc_format. |
6 | Альтернативное сканирование равно alternate_scan. |
5 | RepeatFirstField равно repeat_first_field (не требуется акселератору). |
4 | Chroma420type равно chroma_420_type (не требуется акселератору и ограничен MPEG-2 для progressive_frame). |
3 | Прогрессивный кадр равен progressive_frame. |
0, 1 и 2 | Зарезервированные биты. Это наименее значимые биты. |
bBitstreamConcealmentNeed
Указывает вероятность ошибок в битовых данных, когда bConfigBitstreamRaw член структуры DXVA_ConfigPictureDecode равен 1. Должно быть равно нулю, если bConfigBitstreamRaw равно нулю.
Ускорители видео должны быть разработаны не для сбоя или блокировки независимо от содержимого данных, предоставленных им. Таким образом, может быть полезно для акселератора видео, чтобы получить сведения об оценке узла о вероятности синтаксических ошибок. Это позволяет определить, требуется ли вызвать более сложный алгоритм скрытия ошибок, который может замедлить процесс декодирования битового потока. Допустимые значения для этого элемента приведены следующим образом (все остальные значения зарезервированы).
Ценность | Значение |
---|---|
0 | Битовый поток вряд ли будет содержать значительный объем ошибок в его синтаксическом формате. |
1 | Битовый поток может содержать некоторые ошибки. Эти ошибки, скорее всего, часто возникают (например, ошибка один или два раза в час). |
2 | Битовый поток, скорее всего, будет содержать некоторые ошибки. Эти ошибки могут возникать с частотой, которая может повлиять на взаимодействие с пользователем (например, ошибку каждые пять–десять минут). |
3 | Битовый поток, вероятно, будет содержать относительно значительные, серьезные и частые синтаксические ошибки формата (например, одна или несколько ошибок в минуту). |
bBitstreamConcealmentMethod
Задает предпочтительный метод по умолчанию для обработки скрытия ошибок, если bConfigBitstreamRaw член структуры DXVA_ConfigPictureDecode равен 1. Должно быть равно нулю, если bConfigBitstreamRaw равно нулю. Допустимые значения для этого элемента приведены следующим образом (все остальные значения зарезервированы).
значение | метода скрытия ошибок |
---|---|
0 | Неизвестно или не указано. |
1 | Пространственное внутреннее скрытие рисунка внутри рисунка. |
2 | Эталонный рисунок вперед для межфотографской скрытия (обычно используется в P рисунке или в B рисунке, который ближе к его движущуюся эталонную картину, чем к его обратному движущееся эталонное изображение). |
3 | Обратная ссылка на изображение для межфотографской скрытия (обычно используется в изображении B ближе к его обратной эталонной картине, чем к его эталонной картине вперед). |
Замечания
Некоторые члены этой структуры ограничены определенными значениями конфигурации, установленной с помощью структуры DXVA_ConfigPictureDecode. После передачи параметров уровня рисунка с помощью DXVA_PictureParameters процесс декодирования рисунков в основном регулируется командами управления макроблоком сформированы с помощью DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1или структур DXVA_MBctrl_P_OffHostIDCT_1.
Требования
Требование | Ценность |
---|---|
заголовка | dxva.h (include Dxva.h) |