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 estatísticas de codificação de vídeo, os fornecedores de SoC precisam mudar o driver do codificador de vídeo conforme descrito em Atualizações do driver do codificador de vídeo.
Dados de estatísticas de codificação de vídeo
No Android 13, o codificador de vídeo exporta dados de 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 de vídeo que são codificados no fluxo de bits |
Tipo de imagem | Tipo I, P ou B |
Os desenvolvedores podem extrair informações de estatísticas de cada frame usando a
classe
MediaFormat
.
Atualizações do driver do codificador de vídeo
Para oferecer suporte à exportação de estatísticas de codificação de vídeo, os fornecedores de SoC precisam mudar o driver do 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 da chave
KEY_VIDEO_QP_AVERAGE
: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 é codificado e nenhuma informação QP significativa é codificada no frame.
KEY_PICTURE_TYPE
descreve o tipo de imagem do frame codificado comoPICTURE_TYPE_I
,PICTURE_TYPE_P
,PICTURE_TYPE_B
ouPICTURE_TYPE_UNKNOWN
.KEY_VIDEO_ENCODING_STATISTICS_LEVEL
descreve o nível de informações de estatísticas de codificação emitidas pelo codificador de vídeo, conforme abaixo:Quando o codificador não gera informações sobre as estatísticas de codificação, essa chave é definida como
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
.Quando o codificador gera
KEY_VIDEO_QP_AVERAGE
eKEY_PICTURE_TYPE
para cada frame, essa chave é definida comoVIDEO_ENCODING_STATISTICS_LEVEL_1
.
Consulte VideoEncodingStatisticsTest
.
para uma implementação de referência.
Validação
Execute o teste CTS VideoEncodingStatisticsTest
para validar se a parte média de QP 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 um
taxa de bits mais alta e outra com uma taxa de bits mais baixa. 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);