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

A partir do Android 13, os clientes do aplicativo podem solicitar que o codificador de vídeo exporte estatísticas de codificação para cada quadro de vídeo codificado. Com as estatísticas obtidas do codificador de vídeo, os aplicativos podem otimizar suas tarefas de codificação de vídeo, como codificação multipass e pré-processamento de quadros antes da codificação.

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

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

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

Nome das estatísticas do codificador Descrição
Média de QP de bloco por quadro A média de todos os QPs de bloco no quadro de vídeo que são codificados no fluxo de bits
Tipo de imagem Tipo I ou P ou B

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

Atualizações para o 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 driver do codificador de vídeo. As seguintes chaves foram adicionadas na base do Codec 2.0 no Android 13:

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

    As seguintes regras se aplicam à implementação da chave KEY_VIDEO_QP_AVERAGE :

    • O codificador SoC deve arredondar a média dos QPs do bloco para o número inteiro mais próximo antes de emitir para o Codec 2.0.

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

    • O codificador SoC deve retornar INT_MAX se todos os blocos no quadro atual estiverem no modo ignorado. Esta condição ocorre quando nenhum coeficiente é codificado e nenhuma informação significativa de QP é codificada no quadro.

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

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL descreve o nível de codificação das informações estatísticas emitidas pelo codificador de vídeo, como segue:

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

Validação

Execute o teste VideoEncodingStatisticsTest 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 uma taxa de bits mais alta e outra com uma taxa de bits mais baixa. O CTS então compara os dois valores médios de QP exportados das duas codificações. Se o QP médio da codificação com taxa de bits mais baixa for maior que o QP médio da codificação com taxa de bits mais alta, o CTS passa.

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

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