Compartilhar via


estrutura D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 (d3d12umddi.h)

A estrutura D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 contém os parâmetros de nível de sequência para a entrada de uma operação de codificação de vídeo.

Sintaxe

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;

Membros

Flags

Um valor D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0 que indica os sinalizadores do descritor de controle de sequência para a operação de codificação de quadro atual.

IntraRefreshConfig

Uma estrutura D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 que especifica os parâmetros para o modo intra-atualização que devem ser usados ao disparar sessões intra-atualização. Consulte Comentários para obter detalhes sobre o uso do intra-fresh.

RateControl

Uma estrutura D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2 que especifica a configuração de controle de taxa.

Verifique o sinalizador D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE para determinar se há suporte para reconfiguração dinâmica do controle de taxa:

  • Se houver suporte, um RateControl modificado fará com que o algoritmo de controle de taxa seja reiniciado, com a nova configuração começando da execução do comando EncodeFrame associado.
  • Se não houver suporte, RateControl deverá ser definido no início da sessão de codificação e não alterado durante a sessão.

PictureTargetResolution

Uma estrutura D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080 que descreve a resolução a ser usada ao codificar esse quadro. A resolução de destino deve ser definida com base na lista de resoluções especificadas quando o heap de codificador associado para essa operação foi criado.

Verifique o sinalizador D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE para determinar se há suporte para reconfiguração dinâmica para resolução:

  • Se houver suporte, PictureTargetResolution indicará a resolução a ser usada para o comando EncodeFrame associado. Em alguns codecs, uma alteração na resolução no meio da sessão de codificação pode exigir que um GOP seja redefinido com uma solicitação de quadro de IDR/Chave potencial, redefinindo também os algoritmos de gerenciamento de quadro e buffer de imagem decodificado (DPB).
  • Se não houver suporte, PictureTargetResolution indica a resolução de destino para toda a sessão de codificação e não deve ser alterada durante a sessão.

SelectedLayoutMode

Um valor D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080 que indica qual modo de layout está sendo usado e, portanto, quais membros da união usar em FrameSubregionsLayoutData.

Verifique o sinalizador D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE para determinar se há suporte para reconfiguração dinâmica de sub-região:

  • Se houver suporte, SelectedLayoutMode indica o modo de particionamento de sub-região usado para o comando EncodeFrame associado.
  • Se não houver suporte, *SelectedLayoutMode indica o modo de sub-região de destino da sessão de codificação completa e não deve ser alterado durante a sessão de codificação.

FrameSubregionsLayoutData

Uma estrutura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 que contém dados opcionais específicos do codec de layout de sub-regiões de imagem. Se SelectedLayoutMode indicar que não há sub-regiões, esse membro deverá ser NULL.

CodecGopSequence

Uma estrutura D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0 que especifica o GOP atual usado na sequência de vídeo, em ordem de exibição. As chamadas para EncodeFrame devem seguir este GOP, mas em ordem de sequência após a reordenação de Quadros B.

Verifique o sinalizador D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE para determinar se há suporte para reconfiguração dinâmica do GOP:

  • Se houver suporte, CodecGopSequence indicará o novo modo de sub-região GOP usado a partir do comando EncodeFrame associado.
  • Se não houver suporte, CodecGopSequence indica o padrão GOP de destino (em ordem de exibição) da sessão de codificação completa e não deve ser alterado durante a sessão de codificação.

Comentários

Confira Codificação de vídeo D3D12 para obter informações gerais.

Usando a atualização intra

O uso de quadros de referência bidirecionais (Quadros B) é mutuamente exclusivo com a intra-atualização. O chamador deve marcar que a estrutura do CodecGopSequence não contém quadros B se os modos de atualização intra estiverem ativos. Ao consultar D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA com um modo de intra-atualização diferente de D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, o conjunto CodecGopSequence não deve conter quadros B ou a consulta não retornará suporte.

O uso da intra-atualização infinita é possível solicitando periodicamente uma nova onda de intra-atualização após a conclusão de cada uma das atualizações intra-atualização.

Ao iniciar uma atualização intra de N quadros de duração, o host faz o seguinte:

  • Define o sinalizador de controle de imagem correspondente para iniciar a intra-atualização;
  • Controla o índice de quadros entre [0..N) na estrutura de controle de imagem para sugerir ao driver sobre o progresso da sessão de atualização intra.

O comportamento esperado ao solicitar explicitamente uma onda intra-atualização com n quadros de duração segue:

  • Se a solicitação de intra-atualização ocorrer no início de um GOP, a intra-atualização ocorrerá para N quadros e, em seguida, um novo GOP será iniciado com um quadro I.

  • Se a solicitação de intra-atualização ocorrer no meio de um GOP, o grupo de imagens será encerrado até o último comando EncodeFrame enviado e reiniciado após a sessão de intra-atualização com um novo GOP começando com um quadro I. Por exemplo, quando o GOP é IPPPP... IPPPP..., se o início da intra-atualização for solicitado no envio parcial "IPP" do GOP, os dois últimos quadros P desse GOP serão ignorados, a sessão intra-atualização será emitida para os N próximos quadros e, em seguida, um novo quadro-chave que reinicia a estrutura GOP é esperado.

Para a intra-atualização baseada em linha:

  • A estrutura GOP configurada terá que ser reconfigurada para o IPPP infinito... P... GOP (GOPLength = 0u e PPicturePeriod = 1u) durante a sessão de intra-atualização. Em seguida, ele pode ser reconfigurado novamente após a conclusão da onda de atualização intra-atualização.

  • O modo de particionamento de sub-região configurado será reconfigurado para corresponder ao particionamento de N fatias uniformes por quadro durante uma duração dos comandos N EncodeFrame . Isso é particularmente importante quando o particionamento de sub-região é definido como um modo incompatível com requisitos de intra-atualização, por exemplo, quando a linha de unidades intra codificadas em uma fatia interromperá a limitação definida como bytes por fatia. A expectativa para a intra-atualização baseada em linha é que o quadro resultante contenha N fatias, todas as fatias P, exceto a fatia de linha intra-atualização atual, que deve ser uma fatia I.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 11 (WDDM 3.0)
Cabeçalho d3d12umddi.h

Confira também

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