Compartir a través de


estructura D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 (d3d12umddi.h)

La estructura D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 contiene los parámetros de nivel de secuencia para la entrada de una operación de codificación de vídeo.

Sintaxis

typedef struct D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 {
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0                 Flags;
  D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080                            IntraRefreshConfig;
  D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2                           RateControl;
  D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080                  PictureTargetResolution;
  D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080              SelectedLayoutMode;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 FrameSubregionsLayoutData;
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0                 CodecGopSequence;
} D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0;

Miembros

Flags

Valor de D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0 que indica las marcas del descriptor de control de secuencia para la operación de marco de codificación actual.

IntraRefreshConfig

Estructura D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 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. Consulte Comentarios para obtener más información sobre el uso de intra-fresh.

RateControl

Estructura D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2 que especifica la configuración del control de velocidad.

Compruebe la marca D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE para determinar si se admite la reconfiguración dinámica del control de velocidad:

  • Si se admite, un RateControl modificado hace que se reinicie el algoritmo de control de velocidad, con la nueva configuración a partir de la ejecución del comando EncodeFrame asociado.
  • Si no se admite, RateControl debe establecerse al principio de la sesión de codificación y no cambiarse durante la sesión.

PictureTargetResolution

Estructura D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080 que describe la resolución que se va a usar al codificar este marco. La resolución de destino debe establecerse en función de la lista de resoluciones especificadas cuando se creó el montón de codificador asociado para esta operación.

Compruebe la marca D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE para determinar si se admite la reconfiguración dinámica para la resolución:

  • Si se admite, PictureTargetResolution indica la resolución que se va a usar para el comando EncodeFrame asociado. En 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, además de restablecer el búfer de imagen descodificado (DPB) y algoritmos de administración de fotogramas.
  • Si no se admite, PictureTargetResolution indica la resolución de destino de toda la sesión de codificación y no se debe cambiar durante la sesión.

SelectedLayoutMode

Valor de D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080 que indica qué modo de diseño se usa y, por tanto, qué miembros de unión usar en FrameSubregionsLayoutData.

Compruebe la marca D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE para determinar si se admite la reconfiguración dinámica de la subregión:

  • Si se admite, SelectedLayoutMode indica el modo de creación de particiones de la subregión usado para el comando EncodeFrame asociado.
  • Si no se admite, *SelectedLayoutMode indica el modo de la subregión de destino de la sesión de codificación completa y no se debe cambiar durante la sesión de codificación.

FrameSubregionsLayoutData

Estructura de D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 que contiene los datos opcionales específicos del códec de la imagen. Si SelectedLayoutMode indica que no hay ninguna subregión, este miembro debe ser NULL.

CodecGopSequence

Estructura D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0 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 secuencia después de la reordenación de fotogramas B.

Compruebe la marca D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE para determinar si se admite la reconfiguración dinámica de GOP:

  • Si se admite, CodecGopSequence indica el nuevo modo de subregión GOP que se usa a partir del comando EncodeFrame asociado.
  • Si no se admite, CodecGopSequence indica el patrón GOP de destino (en orden de presentación) de la sesión de codificación completa y no se debe cambiar durante la sesión de codificación.

Comentarios

Vea Codificación de vídeo D3D12 para obtener información general.

Uso de intra-refresh

El uso de marcos de referencia bidireccionales (marcos B) es mutuamente excluyente con la actualización interna. El autor de la llamada debe comprobar que la estructura de CodecGopSequence no contiene fotogramas B si los modos dentro de la actualización están activos. Al consultar D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA con un modo dentro de la actualización distinto de D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, el conjunto CodecGopSequence no debe contener fotogramas B o la consulta no devolverá compatibilidad.

El uso de una actualización interna 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, el host hace lo siguiente:

  • Establece la marca de control de imagen correspondiente para iniciar dentro de la actualización;
  • Controla el índice de fotogramas entre [0..N) en la estructura de control de imagen para sugerir al controlador el progreso de la sesión dentro de la actualización.

El comportamiento esperado al solicitar explícitamente una onda dentro de la actualización con fotogramas N de duración sigue:

  • Si la solicitud de actualización interna se produce al principio de un GOP, la actualización interna se produce para N fotogramas y, a continuación, se inicia un nuevo GOP con un marco I.

  • Si la solicitud de actualización interna se produce en medio de un GOP, el grupo de imágenes finalizará hasta el último comando EncodeFrame enviado y se reiniciará después de la sesión dentro de la actualización con un nuevo GOP a partir de un marco 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.

Para 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 onda dentro de la actualización.

  • El modo de creación de particiones de la subregión configurado se volverá a configurar para que se corresponda con N segmentaciones uniformes de particiones por fotograma durante una duración de los comandos N EncodeFrame . Esto es especialmente importante cuando la creación de particiones de la subregión se establece en un modo incompatible con los requisitos dentro de la actualización, por ejemplo, cuando la fila de unidades intracodadas de un segmento interrumpirá la limitación establecida en bytes por segmento. La expectativa de la actualización interna basada en filas es que el marco resultante contiene N segmentos, todos los segmentos P, excepto el segmento de fila dentro de la actualización actual, que tiene que ser un segmento I.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 11 (WDDM 3.0)
Encabezado d3d12umddi.h

Consulte también

D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0

D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0

PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2