estructura D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC (d3d12video.h)
Representa los parámetros de la entrada de la operación de codificación de vídeo en un nivel de secuencia.
Sintaxis
typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
Miembros
Flags
Combinación OR bit a bit de valores de la enumeración D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS que especifica las marcas del descriptor de control de secuencia para la operación actual.
IntraRefreshConfig
Estructura de D3D12_VIDEO_ENCODER_INTRA_REFRESH que especifica los parámetros para el modo dentro de la actualización que se debe usar al desencadenar sesiones dentro de la actualización.
El uso de marcos de referencia bidireccionales (marcos B) es mutuamente excluyente con la actualización interna. Los autores de llamadas deben comprobar que la estructura GOP no contiene fotogramas B si los modos de actualización intra-actualización están activos. Al consultar para D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT con un modo dentro de la actualización distinto de D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, el conjunto de D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE especificado no debe contener marcos B o la consulta no devolverá compatibilidad.
El uso de una actualización intra-actualización infinita es posible solicitando periódicamente una nueva oleada de intra-actualización después de que finalice cada una de ellas.
Al iniciar una actualización interna de N fotogramas de duración, los hosts establecen la marca de control de imagen correspondiente para iniciar la actualización interna y controla el índice de fotogramas entre [0..N) también en la estructura de control de imagen para sugerir al controlador sobre el progreso de la sesión dentro de la actualización.
Comportamiento esperado al solicitar explícitamente una onda dentro de la actualización con la duración N fotogramas:
Si la solicitud de actualización interna se produce al principio de un GOP, la actualización intracurre para N fotogramas y, a continuación, se inicia un nuevo GOP con un fotograma I.
Si la solicitud de actualización interna se produce en medio de un GOP, el grupo de imágenes finalizará hasta que se envíe el último comando EncodeFrame y se reinicie después de la sesión dentro de la actualización con un nuevo GOP a partir de un fotograma I. Por ejemplo, cuando el GOP es IPPPP... IPPPP..., si se solicita el inicio dentro de la actualización en el envío parcial "IPP" del GOP, se omitirán los dos últimos fotogramas P de ese GOP, se emitirá la sesión dentro de la actualización para los N fotogramas siguientes y, a continuación, se espera un nuevo fotograma clave que reinicie la estructura GOP.
En el caso de la actualización interna basada en filas, la estructura GOP configurada tendrá que volver a configurarse en INFINITE IPPP... P... GOP (GOPLength = 0u y PPicturePeriod = 1u) durante la sesión dentro de la actualización. A continuación, se puede volver a configurar una vez finalizada la oleada de IR.
En el caso de la actualización interna basada en filas, el modo de creación de particiones de la subdivisión configurado se volverá a configurar para que se corresponda con N segmentos uniformes de partición por fotograma durante una duración de los comandos N EncodeFrame . Esto es especialmente importante para cuando la creación de particiones de la subdivisión se establece en un modo incompatible con los requisitos de IR, por ejemplo, cuando la fila de unidades intra codificadas en un segmento interrumpirá la limitación establecida en bytes por segmento. La expectativa de actualización interna basada en filas es que el marco resultante contiene N segmentos, todos los segmentos P, excepto el segmento de fila de actualización intra actual, que tiene que ser un segmento I.
RateControl
Estructura D3D12_VIDEO_ENCODER_RATE_CONTROL que especifica la configuración del control de velocidad.
Compruebe la compatibilidad con la reconfiguración dinámica del control de frecuencia en D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE. Si se permite la reconfiguración dinámica del control de velocidad, modificando RateControl, el algoritmo de control de velocidad se reinicia con la nueva configuración a partir de la ejecución del objeto EncodeFrame asociado. De lo contrario, debe establecerse al principio de la sesión de codificación y no cambiar después.
PictureTargetResolution
Estructura D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC que describe la resolución que se va a usar al codificar este marco.
Compruebe la compatibilidad con la reconfiguración dinámica de resolución en D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE. Si no se proporciona compatibilidad con esto, PictureTargetResolution indica la resolución de destino de la sesión de codificación completa y no se debe cambiar durante la sesión de codificación. De lo contrario, indica la resolución usada para el comando EncodeFrame asociado.
El destino debe establecerse en función de la lista de resoluciones especificadas al crear el montón del codificador asociado para esta operación.
Para algunos códecs, un cambio en la resolución en medio de la sesión de codificación podría requerir que un GOP se restablezca con una posible solicitud idR/fotograma clave, y también podría requerir restablecer los algoritmos de administración de fotogramas o búfer de DPB.
SelectedLayoutMode
Valor de la enumeración D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE que especifica qué modo de diseño se usa y, por tanto, qué miembros de unión usar en pFrameSubregionsLayoutData.
Compruebe la compatibilidad con la reconfiguración dinámica de la subdivisión en [D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE](ne-d3d12video-d3d12_video_encoder_support_flags.md). Si no se proporciona soporte técnico para ello, indica el modo de subdivisión de destino de la sesión de codificación completa y no debe cambiarse durante la sesión de codificación. De lo contrario, esto indica el modo de creación de particiones de la subdivisión utilizado para el comando EncodeFrame asociado.
FrameSubregionsLayoutData
Estructura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA que especifica los datos opcionales de códec específicos del códec. Si el valor SelectedLayoutMode especificado indica que no hay ninguna subdivisión, se espera null.
CodecGopSequence
Estructura de D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE que especifica el GOP actual usado en la secuencia de vídeo, en orden de visualización. Las llamadas a EncodeFrame deben seguir este GOP, pero en orden de codificación después de la reordenación de fotogramas B.
Compruebe la compatibilidad con la reconfiguración dinámica de GOP en D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE. Si no se proporciona compatibilidad para esto, CodecGopSequence indica el patrón GOP de destino (en orden de visualización) de la sesión de codificación completa y no se debe cambiar durante la sesión de codificación. De lo contrario, esto indica el nuevo modo de subdivisión GOP que se usa a partir del comando EncodeFrame asociado.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Compilación 22000 de Windows |
Servidor mínimo compatible | Compilación 22000 de Windows |
Encabezado | d3d12video.h |