Поделиться через


структура 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, за которым следуют все блоки Cb 4:2:0 в порядке растрового сканирования, затем 4:2:0 блоки Cr, 4:2:2 блоки Cb, 4:2:2 блоки Cr, а затем 4:4:4 блоков Cb, затем блоки Cr 4:4:4). Производный термин 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 к bBPPminus1.

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 это значение всегда должно быть равно 1, указывая формат 4:2:0. Если значение равно 2, это означает 4:2:2, а если значение 3, указывает выборку 4:4:4. Этот член должен быть равен 1, если член bConfig4GroupedCoefsDXVA_ConfigPictureDecode равен 1 (так как операция bConfig4GroupedCoefs не включает указание EOB, необходимое в данных коэффициента в форматах 4:2:2 и 4:4:4).

Примечание

Горизонтальная хрома немного отличается в H.261, H.263 и MPEG-1 по сравнению с MPEG-2 и MPEG-4. Предполагается, что эта разница достаточно мала, чтобы игнорировать.

bPicScanFixed

При использовании обработки остаточных разностных блоков на основе ускорителей значение 1 для этого флага указывает, что метод обратного сканирования одинаков для всех макроблоков на рисунке. Нулевое значение указывает, что это не так. Этот член должен иметь значение 1, если элемент bConfigHostInverseScan равен 1 или если член bConfigResidDiffAccelerator равен нулю в DXVA_ConfigPictureDecode.

bPicScanMethod

Указывает фиксированный обратный метод сканирования для рисунка, если значение bPicScanFixed равно 1. Если значение bPicScanFixed равно нулю, этот член не имеет смысла и должен иметь нулевое значение.

Если элемент bConfigHostInverseScan DXVA_ConfigPictureDecode равен нулю, метод сканирования, определенный этим элементом, может быть одним из следующих.

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-разрядных выборок, а нулевое значение указывает на то, что они не могут.

Этот элемент должен быть равен нулю, если член bConfigResidDiffHostDXVA_ConfigPictureDecode равен нулю или если BPP больше 8. Этот член должен иметь значение 1, если BPP равен 8, bPicIntra — 1, а bConfigResidDiffHost — 1. Этот член должен иметь значение 1, если элемент bConfigSpatialResid8 DXVA_ConfigPictureDecode равен 1.

Если этот член равен 1, макроблоки пространственного домена отправляются в виде 8-разрядных значений (которые являются либо подписанными, либо неподписанными, как определено элементом bConfigIntraResidUnsigned DXVA_ConfigPictureDecode), а различия макроблоков пространственного домена, неintra, отправляются как подписанные 8-разрядные значения различий относительно некоторых прогнозов с компенсацией движения.

Член bPicSpatialResid8 отличается от элемента bConfigSpatialResid8 DXVA_ConfigPictureDecode тем, что он является указанием для конкретного изображения, а не глобальным показателем для всей последовательности видео. В некоторых случаях, например на рисунке intra с 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), как указано в приложении F H.263. Если 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-разрядное слово следующим образом.

Bits Описание
от 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.

Если элемент bConfigBitstreamRaw структуры DXVA_ConfigPictureDecode равен нулю, то 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] — backward_f_code MPEG-1.

wBitstreamPCEelements

Если член bConfigBitstreamRawDXVA_ConfigPictureDecode равен 1, этот элемент содержит набор флагов, необходимых для процесса декодирования битового потока видео MPEG-2. Он не используется и должен быть равен нулю, если параметр bConfigBitstreamRaw равен нулю и для видео, отличного от MPEG-2. Биты в этом элементе определяются соответствием с элементами bitstream расширения кодирования изображений MPEG-2 следующим образом.

Bits Описание
14 и 15 IntraDCprecision равно intra_dc_precision.
12 и 13 Объект AnotherPicStructure равен picture_structure. Значение должно быть равно члену bPicStructure данной структуры.
11 TopFieldFirst равен top_field_first.
10 FrameDCTprediction равно frame_pred_frame_dct.
9 Параметр ConcealmentMVs равен concealment_motion_vectors.
8 QuantScaleType равен q_scale_type.
7 Формат IntraVLC равен intra_vlc_format.
6 AlternateScan равен 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 (включая Dxva.h)

См. также раздел

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1