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 |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de