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 del 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, una RateControl modificada 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 cambiar 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 del codificador de 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 se restablezca un GOP con una posible solicitud idR/fotograma clave, además de restablecer el búfer de 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 debe cambiarse durante la sesión.
SelectedLayoutMode
Valor 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 subdivisión:
- Si se admite, SelectedLayoutMode indica el modo de creación de particiones de subred que se usa para el comandoEncodeFrame asociado.
- Si no se admite, *SelectedLayoutMode indica el modo de subred de destino de la sesión de codificación completa y no debe cambiarse durante la sesión de codificación.
FrameSubregionsLayoutData
Estructura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 que contiene los datos opcionales específicos del códec del diseño de las subredes de imagen. Si SelectedLayoutMode indica que no hay ninguna subred, 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 del reordenamiento 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 subdivisión goP que se usa a partir del comandoencodeFrame 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 debe cambiarse durante la sesión de codificación.
Observaciones
Consulte de codificación de vídeo D3D12 para obtener información general.
Uso de la actualización intra-actualización
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 CodecGopSequence's structure does not contain B frames if intra-refresh modes are active. Al consultar para D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA con un modo intra-refresh distinto de D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, el CodecGopSequence establecido 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 las actualizaciones posteriores.
Al iniciar una actualización intra-actualización de N fotogramas de duración, el host hace lo siguiente:
- Establece la marca de control de imagen correspondiente para iniciar la actualización interna;
- 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 la duración N fotogramas sigue:
Si la solicitud de actualización intra-actualización se produce al principio de un GOP, la actualización intra-refresh 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 enviado EncodeFrame 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 intra-actualización 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 dentro de la actualización.
Se volverá a configurar el modo de creación de particiones de la subdivisión configurada para que se corresponda con N segmentos uniformes de partición por fotograma durante una duración de N comandos encodeFrame. Esto es especialmente importante cuando la creación de particiones de la subdivisión se establece en un modo incompatible con los requisitos de actualización interna, por ejemplo, cuando la fila de unidades intra codificadas en 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 | Valor |
---|---|
cliente mínimo admitido | Windows 11 (WDDM 3.0) |
encabezado de | d3d12umddi.h |
Consulte también
D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0
D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0