Compartir a través de


estructura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 (d3d12video.h)

Representa los elementos de control de nivel de imagen del comando EncodeFrame asociado para la codificación H.264.

Sintaxis

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS                                         Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_H264                                                               FrameType;
  UINT                                                                                              pic_parameter_set_id;
  UINT                                                                                              idr_pic_id;
  UINT                                                                                              PictureOrderCountNumber;
  UINT                                                                                              FrameDecodingOrderNumber;
  UINT                                                                                              TemporalLayerIndex;
  UINT                                                                                              List0ReferenceFramesCount;
  UINT                                                                                              *pList0ReferenceFrames;
  UINT                                                                                              List1ReferenceFramesCount;
  UINT                                                                                              *pList1ReferenceFrames;
  UINT                                                                                              ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264                                             *pReferenceFramesReconPictureDescriptors;
  UCHAR                                                                                             adaptive_ref_pic_marking_mode_flag;
  UINT                                                                                              RefPicMarkingOperationsCommandsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION           *pRefPicMarkingOperationsCommands;
  UINT                                                                                              List0RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
  UINT                                                                                              List1RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
  UINT                                                                                              QPMapValuesCount;
  INT8                                                                                              *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;

Miembros

Flags

Combinación OR bit a bit de valores de la enumeración D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS que especifica marcas de configuración para el marco que se va a codificar.

FrameType

Valor de la enumeración D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 que especifica el tipo de imagen. Asegúrese de que las marcas específicas del códec admiten el tipo especificado. Esta selección debe mantenerse sincronizada con la configuración de la estructura GOP establecida por el host. Tenga en cuenta que el GOP se define en orden de visualización y esta selección de tipo de imagen debe seguir el GOP, pero en orden de codificación.

pic_parameter_set_id

Un UINT que especifica el valor que se va a usar en los encabezados de segmento del marco actual para hacer referencia al PPS.

idr_pic_id

Cuando FrameType** es D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME, un UINT que indica el identificador del marco IDR que se va a usar en todos los encabezados de segmentos presentes en el marco.

PictureOrderCountNumber

Un UINT que especifica el orden de presentación del fotograma actual.

FrameDecodingOrderNumber

Un UINT que especifica el orden de descodificación de fotogramas con la semántica indicada por el encabezado de segmento frame_num elemento de sintaxis que se incrementa después de cada imagen de referencia.

TemporalLayerIndex

Un UINT que especifica el número de capa de imagen en la jerarquía temporal. Compruebe el número máximo de capas en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.

List0ReferenceFramesCount

Un UINT que especifica el número de referencias de fotogramas anteriores que se usarán para este fotograma. Este valor debe ser coherente con lo que se expone en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.

pList0ReferenceFrames

Puntero a una matriz UINT que especifica la lista de fotogramas de referencia anteriores que se van a usar para este fotograma. Cada valor entero de este índice de matriz en pReferenceFramesReconPictureDescriptors para hacer referencia a imágenes guardadas en el DPB.

List1ReferenceFramesCount

Un UINT que especifica el número de referencias de fotograma futuras que se van a usar para este fotograma. Este valor debe ser coherente con lo que se expone en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.

pList1ReferenceFrames

Puntero a una matriz UINT que especifica la lista de fotogramas de referencia de fotogramas futuros que se usarán para este fotograma. Cada valor entero de este índice de matriz en pReferenceFramesReconPictureDescriptors para hacer referencia a imágenes guardadas en el DPB.

ReferenceFramesReconPictureDescriptorsCount

Un UINT que especifica el número de entradas en pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Puntero a una matriz UINT que describe el estado actual del búfer de DPB guardado en D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. PList0ReferenceFrames y pList1ReferenceFrames enumera índices asignados de referencias pasadas o futuras a esta matriz descriptores.

Esta matriz de descriptores, a su vez, asigna una imagen de referencia para este marco a un índice de recursos en la matriz de imágenes reconstruidas D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. Además, para cada imagen de referencia, indica el número de orden de codificación y visualización y si es una referencia a largo plazo.

El tamaño de esta matriz siempre coincide con D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures para el comando EncodeFrame asociado.

adaptive_ref_pic_marking_mode_flag

UCHAR que define un modo semántico para el control de referencias de fotogramas.

valor de adaptive_ref_pic_marking_mode_flag Modo de marcado de imagen de referencia especificado
0 1
Modo de marcado de imagen de referencia de ventana deslizante: modo de marcado que proporciona un mecanismo primero en salir para imágenes de referencia a corto plazo. Modo de marcado de imagen de referencia adaptable: modo de marcado de imagen de referencia que proporciona elementos de sintaxis para especificar el marcado de imágenes de referencia como "sin usar para referencia" y para asignar índices de fotogramas a largo plazo.

RefPicMarkingOperationsCommandsCount

Un UINT que especifica el número de operaciones de marcado de imágenes de referencia asociadas al marco actual. Requiere que adaptive_ref_pic_marking_mode_flag esté establecido en 1.

pRefPicMarkingOperationsCommands

Puntero a una matriz de estructuras D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION que representan la lista de operaciones de marcado de imágenes de referencia asociadas al marco actual. Las operaciones descritas en esta lista deben reflejarse en los descriptores de DPB en consecuencia durante la sesión de codificación.

List0RefPicModificationsCount

Un UINT que especifica el número de elementos en pList0RefPicModifications.

pList0RefPicModifications

Puntero a una matriz de estructuras de D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION que representan la lista de operaciones de modificación de listas de imágenes de referencia para la lista pList0ReferenceFrames .

List1RefPicModificationsCount

Un UINT que especifica el número de elementos de pList1RefPicModifications.

pList1RefPicModifications

Puntero a una matriz de estructuras de D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION que representan la lista de operaciones de modificación de la lista de imágenes de referencia para la lista pList1ReferenceFrames .

QPMapValuesCount

Un UINT que especifica el número de elementos presentes en pRateControlQPMap. Esto debe coincidir con el número de bloques de codificación del marco, redondeando la resolución de fotogramas a los valores alineados más cercanos.

pRateControlQPMap

Puntero a una matriz de Int8 que contiene, en orden de examen de fila o columna, los valores de mapa de QP que se usarán en cada región cuadrada de este marco. Las dimensiones del mapa QP se pueden calcular mediante la resolución actual y D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize transmite los tamaños de región cuadrados.

Comentarios

Tenga en cuenta que si el marco actual está marcado como una imagen de referencia, la salida debe contener la imagen reconstruida junto con la secuencia de bits para que el host la coloque en comandos futuros en la lista de referencia de imágenes reconstruidas. Tenga en cuenta que puede haber limitaciones para que algunos tipos de fotogramas se marquen como referencias, compruebe la compatibilidad con características antes de establecer esos valores.

En las tablas siguientes se enumeran los valores de SPS y PPS esperados para la codificación H264.

asignaciones de Level_idc para H264

Nivel D3D12 Se esperaba level_idc Notas
D3D12_VIDEO_ENCODER_LEVELS_H264_1 10 None
D3D12_VIDEO_ENCODER_LEVELS_H264_1b 11 SPS.constraint_set3 debe ser 1
D3D12_VIDEO_ENCODER_LEVELS_H264_11 11 None
D3D12_VIDEO_ENCODER_LEVELS_H264_12 12 None
D3D12_VIDEO_ENCODER_LEVELS_H264_13 13 None
D3D12_VIDEO_ENCODER_LEVELS_H264_2 20 None
D3D12_VIDEO_ENCODER_LEVELS_H264_21 21 None
D3D12_VIDEO_ENCODER_LEVELS_H264_22 22 None
D3D12_VIDEO_ENCODER_LEVELS_H264_3 30 None
D3D12_VIDEO_ENCODER_LEVELS_H264_31 31 None
D3D12_VIDEO_ENCODER_LEVELS_H264_32 32 None
D3D12_VIDEO_ENCODER_LEVELS_H264_4 40 None
D3D12_VIDEO_ENCODER_LEVELS_H264_41 41 None
D3D12_VIDEO_ENCODER_LEVELS_H264_42 42 None
D3D12_VIDEO_ENCODER_LEVELS_H264_5 50 None
D3D12_VIDEO_ENCODER_LEVELS_H264_51 51 None
D3D12_VIDEO_ENCODER_LEVELS_H264_52 52 None
D3D12_VIDEO_ENCODER_LEVELS_H264_6 60 None
D3D12_VIDEO_ENCODER_LEVELS_H264_61 61 None
D3D12_VIDEO_ENCODER_LEVELS_H264_62 62 None

Valores esperados del conjunto de parámetros de secuencia H264

Elemento Syntax Valor predeterminado esperado Notas
profile_idc Valor de enumeración de H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 None
constraint_set0_flag 0 None
constraint_set1_flag 0 None
constraint_set2_flag 0 None
constraint_set3_flag 0 1 si usa D3D12_VIDEO_ENCODER_LEVELS_H264_1b
constraint_set4_flag 0 None
constraint_set5_flag 0 None
reserved_zero_2bits 0 None
level_idc Consulte la tabla anterior para los niveles H264. None
seq_parameter_set_id Específico del usuario None
chroma_format_idc 1 Para el uso solo con formatos P010 o NV12 YUV 4.2.0
bit_depth_luma_minus8 0 para NV12, 2 para P010 None
qpprime_y_zero_transform_bypass_flag 0 None
seq_scaling_matrix_present_flag 0 None
log2_max_frame_num_minus4 Igual que en D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 None
pic_order_cnt_type Igual que en D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 Solo los modos 0 y 2 admitidos en esta API
log2_max_pic_order_cnt_lsb_minus4 Igual que en D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 Solo si pic_order_cnt_type == 0
max_num_ref_frames Número máximo de imágenes de referencia usadas en la sesión de codificación None
gaps_in_frame_num_value_allowed_flag 0 None
pic_width_in_mbs_minus1 std::ceil(sequenceTargetResolution.Width / 16.0)) - 1; None
pic_height_in_map_units_minus1 std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; None
frame_mbs_only_flag 0 No se admite ninguna interlace
direct_8x8_inference_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM None
frame_cropping_flag 0 o 1 en función de que la resolución de codificación esté alineada o no sea 16 None
frame_cropping_rect_left_offset 0 Solo si frame_cropping_flag = 1
frame_cropping_rect_right_offset ((pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 Solo si frame_cropping_flag = 1
frame_cropping_rect_top_offset ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 Solo si frame_cropping_flag = 1
frame_cropping_rect_bottom_offset 0 Solo si frame_cropping_flag = 1
vui_paramenters_present_flag 0 None

Valores esperados del conjunto de parámetros de imagen H264

Elemento Syntax Valor predeterminado esperado Notas
pic_parameter_set_id Específico del usuario None
seq_parameter_set_id Específico del usuario None
entropy_coding_mode_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING None
pic_order_present_flag 0 Solo compatibilidad con pic_cnt_type = 0, 2
num_slice_groups_minus1 0 None
num_ref_idx_l1_active_minus1 std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount): 1, 0) None
num_ref_idx_l0_active_minus1 std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount): 1, 0) None
weighted_pred_flag 0 None
weighted_bipred_idc 0 None
pic_init_qp_minus26 0 None
pic_init_qs_minus26 0 None
chroma_qp_index_offset 0 None
deblocking_filter_control_present_flag 1 None
constrained_intra_pred_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION None
redundant_pic_cnt_present_flag 0 None
transform_8x8_mode_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM Solo si se usan perfiles altos
pic_scaling_matrix_present_flag 0 None
second_chroma_qp_index_offset 0 None

Requisitos

   
Cliente mínimo compatible Windows Build 22000
Servidor mínimo compatible Windows Build 22000
Encabezado d3d12video.h