Codecs de mídia

A partir do Android 10 (nível 29 da API), há métodos em MediaCodecInfo que revelam mais informações sobre um codec:

isSoftwareOnly()
Retorna verdadeiro se o codec for executado apenas no software. Os codecs de software não garantem o desempenho da renderização.
isHardwareAccelerated()
Retorna verdadeiro se um codec for acelerado por hardware.
isVendor()
Retorna verdadeiro se o codec for fornecido pelo fornecedor do dispositivo ou falso se for fornecido pela plataforma Android.
isAlias()
MediaCodecList pode conter outras entradas para o mesmo codec usando um ou mais nomes de codec alternativos (alias). Esse método vai retornar "true" se o codec nessa entrada for um alias para outro codec.

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

Pontos de desempenho

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

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

Para verificar se um determinado PerformancePoint abrange outro, chame 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. Essa lista pode estar vazia se o codec não atender nem mesmo ao ponto de desempenho padrão mais baixo.

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