Iniciando com Android 10 (nível de API 29) e versões superiores, há três métodos em MediaCodecInfo
que revelam mais informações sobre um codec:
isSoftwareOnly()
- Retornará como verdadeiro se o codec for executado somente no software. Os codecs de software não garantem o desempenho da renderização.
isHardwareAccelerated()
- Retornará como verdadeiro se um codec for acelerado pelo hardware.
isVendor()
- Retornará como verdadeiro se o codec for disponibilizado pelo fornecedor do dispositivo, ou como falso se for fornecido pela plataforma Android.
isAlias()
MediaCodecList
pode conter entradas adicionais para o mesmo codec subjacente usando um nome de codec alternativo (alias). Este método retornará como verdadeiro se o codec nesta entrada for um alias para 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 renderizar um vídeo em uma altura, largura e taxa de frames específicas. Por exemplo, o ponto de desempenho UHD_60
representa um vídeo de ultra-alta definição (3.840 x 2.160 pixels) renderizado a 60 frames por segundo.
O método MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
retorna uma lista de entradas PerformancePoint
, que o codec pode renderizar ou capturar.
Você pode conferir se um determinado PerformancePoint
cobre outro chamando PerformancePoint.covers(PerformancePoint)
. Por exemplo, UHD_60.covers(UHD_50)
retorna como verdadeiro.
Uma lista de pontos de desempenho é fornecida para todos os codecs acelerados por hardware. A lista poderá ser vazia caso o codec não atenda ao ponto de desempenho padrão mais baixo.
Os dispositivos que fizeram upgrade para Android 10 (nível de API 29) e versões superiores sem atualizar a imagem do fornecedor não terão dados do ponto de desempenho, já que essas informações são provenientes do fornecedor HAL. Nesse caso, getSupportedPerformancePoints()
retornará um valor nulo.