No Android 10 (nível 29 da API) e versões mais recentes, há métodos em
MediaCodecInfo
que
revelam mais informações sobre um codec:
isSoftwareOnly()
- Retorna "true" se o codec for executado apenas no software. Os codecs de software não oferecem garantias sobre 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 usando um nome de codec alternativo (alias). Esse método retornará "true" se o codec nessa entrada for um alias de outro codec.
Além disso,
MediaCodec.getCanonicalName()
retorna o nome do codec subjacente para codecs criados usando um alias.
Pontos de desempenho
Um ponto de desempenho representa a capacidade de um codec de renderizar vídeo em uma altura, largura e
taxa de frames específicas. Por exemplo, o ponto de desempenho UHD_60
representa vídeos em ultra-alta definição (3.840 x 2.160 pixels) renderizados a 60 quadros
por segundo.
O método
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
retorna uma lista de entradas
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. Essa lista poderá ser vazia se o codec não atender 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 um valor nulo.