estructura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION (d3d12video.h)

Describe los cambios en las imágenes de referencia como operaciones de memoria como una tupla de un identificador de operación y los parámetros asociados necesarios para la operación.

Sintaxis

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION {
  UCHAR memory_management_control_operation;
  UINT  difference_of_pic_nums_minus1;
  UINT  long_term_pic_num;
  UINT  long_term_frame_idx;
  UINT  max_long_term_frame_idx_plus1;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION;

Miembros

memory_management_control_operation

Operación de control que se va a aplicar para afectar al estado de marcado de imagen de referencia.

difference_of_pic_nums_minus1

Se usa con memory_management_control_operation igual a 3 o 1 para asignar un índice de marco a largo plazo a una imagen de referencia a corto plazo o para marcar una imagen de referencia a corto plazo como "sin usar para referencia".

long_term_pic_num

Se usa con memory_management_control_operation igual a 2 para marcar una imagen de referencia a largo plazo como "sin usar para referencia".

long_term_frame_idx

Se usa con memory_management_control_operation igual a 3 o 6 para asignar un índice de fotograma a largo plazo a una imagen.

max_long_term_frame_idx_plus1

El valor menos 1 especifica el valor máximo del índice de fotogramas a largo plazo permitido para imágenes de referencia a largo plazo (hasta la recepción de otro valor de max_long_term_frame_idx_plus1).

Comentarios

Para obtener más información, consulte especificación H264 para obtener más detalles: sección 8.2.5.4 "Proceso de marcado de imagen de referencia descodificado del control de memoria adaptable".

La variable MaxLongTermFrameIdx se deriva de la siguiente manera:

– Si max_long_term_frame_idx_plus1 es igual a 0, MaxLongTermFrameIdx se establece igual a "sin índices de fotogramas a largo plazo". : de lo contrario (max_long_term_frame_idx_plus1 es mayor que 0), MaxLongTermFrameIdx se establece igual a max_long_term_frame_idx_plus1 − 1.

La operación de marcar el marco actual como referencia a corto plazo viene dada por una marca presente en la estructura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS con sus valores PictureOrderCountNumber y FrameDecodingOrderNumber correspondientes indicados en la estructura de control de imagen asociada.

La variable max_num_ref_frames se indica en esta API por la capacidad máxima de DPB notificada.

Tenga en cuenta que, para marcar un marco IDR como referencia a largo plazo, el mecanismo explícito propuesto consiste en marcarlo primero como referencia a corto plazo, estableciendo D3D12_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_USED_AS_REFERENCE_PICTURE al llamar a EncodeFrame para el marco IDR y, posteriormente, promoverlo para que sea un marco de referencia a largo plazo mediante la operación de administración de memoria '3' para marcar una imagen de referencia a corto plazo como "usada para referencia a largo plazo" y asignar un índice de marco a largo plazo a eso.

Como alternativa, si codifica un marco IDR y establece adaptive_ref_pic_marking_mode_flag = 1, el controlador asume que el cliente está intentando establecer el encabezado de segmento H264 long_term_reference_flag y lo hará en la secuencia de bits de salida para la llamada a EncodeFrame .

Requisitos

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