Exportar estatísticas de codificação de vídeo

No Android 13 e versões mais recentes, os clientes de apps podem solicitar que o codificador de vídeo exporte estatísticas para cada frame de vídeo codificado. Com as estatísticas coletadas no codificador de vídeo, os apps podem otimizar tarefas relacionadas a codificação de vídeo, como a codificação de várias transmissões e o pré-processamento de frames antes da codificação.

Para exportar as estatísticas de codificação de vídeo, os fornecedores de SoC precisam mudar o codificador de vídeo conforme descrito em Atualizações no driver do codificador de vídeo.

Dados de estatísticas de codificação de vídeo

Com o Android 13, o codificador de vídeo exporta estatísticas conforme mostrado na tabela a seguir.

Nome das estatísticas do codificador Descrição
QP médio de bloqueio por frame A média de todos os QPs de bloco no frame do vídeo que são codificados no bitstream
Tipo de imagem Tipo I, P ou B

Os desenvolvedores podem recuperar informações estatísticas para cada frame usando a propriedade MediaFormat classe de desenvolvedor.

Atualizações do driver do codificador de vídeo

Para suportar a exportação de estatísticas de codificação de vídeo, os fornecedores de SoC devem alterar o codificador de vídeo. As chaves a seguir foram adicionadas à base do Codec 2.0 no Android 13:

  • KEY_VIDEO_QP_AVERAGE descreve o tamanho por frame. QP médio do bloco.

    As regras a seguir se aplicam à implementação do KEY_VIDEO_QP_AVERAGE. chave:

    • O codificador SoC precisa arredondar a média dos QPs do bloco para o inteiro antes de emitir para o Codec 2.0.

    • O valor médio é calculado somente a partir de um plano de luma.

    • O codificador SoC precisa retornar INT_MAX se todos os blocos na atual estão no modo ignorado. Essa condição ocorre quando nenhum coeficiente é e nenhuma informação QP significativa é codificada no frame.

  • KEY_PICTURE_TYPE descreve o tipo de imagem do frame codificado como PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B, ou PICTURE_TYPE_UNKNOWN.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL descreve o nível informações de estatísticas de codificação emitidas do codificador de vídeo, da seguinte maneira:

Consulte VideoEncodingStatisticsTest. para uma implementação de referência.

Validação

Execute o VideoEncodingStatisticsTest. Teste CTS para validar se a parte QP média das estatísticas de codificação de vídeo funciona corretamente: o CTS executa duas codificações do mesmo vídeo de entrada, uma com maior e outro com menor taxa de bits. O CTS então compara os dois exportou os valores médios do QP das duas codificações. Se o QP médio da codificação com a menor taxa de bits mais baixa que o QP médio da codificação com o uma taxa de bits maior, passagens CTS.

Para validar a desativação do recurso de exportação de estatísticas de codificação de vídeo ao ativado, use a chave VIDEO_ENCODING_STATISTICS_LEVEL_NONE da seguinte maneira:

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);