Codecs de mídia

No Android 10 (nível 29 da API) e versões mais recentes, existem métodos em MediaCodecInfo que revelar mais informações sobre um codec:

isSoftwareOnly()
Retorna verdadeiro se o codec for executado apenas no software. Codecs de software garante o desempenho da renderização.
isHardwareAccelerated()
Retorna "true" se um codec for acelerado pelo hardware.
isVendor()
Retorna "true" se o codec for fornecido pelo fornecedor do dispositivo ou "false" se fornecido pela plataforma Android.
isAlias()
MediaCodecList pode conter entradas adicionais para o mesmo codec subjacente usando um ou mais nomes de codecs alternativos (aliases). Esse método retorna verdadeiro se a nesta entrada é um alias de outro codec.

Além disso, MediaCodec.getCanonicalName() retorna o nome do codec subjacente para codecs criados por meio de um alias.

Pontos de desempenho

Um ponto de desempenho representa a capacidade de um codec de renderizar vídeo em uma determinada altura, largura e frame rate. Por exemplo, o ponto de desempenho UHD_60 representa vídeo em ultra-alta definição (3.840 x 2.160 pixels) renderizado em 60 quadros. por segundo.

Método MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() retorna uma lista de PerformancePoint que o codec pode renderizar ou capturar.

É possível verificar se um determinado PerformancePoint cobre outro chamando PerformancePoint.covers(PerformancePoint). Por exemplo, UHD_60.covers(UHD_50) retorna verdadeiro.

Uma lista de pontos de desempenho é fornecida para todos os codecs acelerados por hardware. Pode ser uma lista vazia se o codec não atender ao padrão mais baixo ponto de performance.

Os dispositivos que receberam upgrade para o Android 10 (nível 29 da API) e versões mais recentes não atualizar a imagem do fornecedor não terão dados do ponto de desempenho, porque isso os dados vêm do fornecedor HAL. Nesse caso, getSupportedPerformancePoints(). retorna nulo.