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()MediaCodecListpode 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.