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 comoPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
ouPICTURE_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:Quando o codificador não gera informações sobre estatísticas de codificação, essa chave é configurada como
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Quando o codificador gera
KEY_VIDEO_QP_AVERAGE
eKEY_PICTURE_TYPE
para cada quadro, essa chave é definida comoVIDEO_ENCODING_STATISTICS_LEVEL_1
.
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 maneira:
format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);