A partir de Android 10 (nivel de API 29) y versiones posteriores, hay métodos en MediaCodecInfo
que revelan más información sobre un códec:
isSoftwareOnly()
- Devuelve verdadero si el códec se ejecuta solo en software. Los códecs de software no permiten garantizar el rendimiento de procesamiento.
isHardwareAccelerated()
- Devuelve verdadero si un códec se acelera por hardware.
isVendor()
- Muestra el valor "true" si el proveedor del dispositivo proporciona el códec o "false" si lo proporciona la plataforma de Android.
isAlias()
MediaCodecList
puede contener entradas adicionales para el mismo códec subyacente con un nombre de códec alternativo (alias). Este método devuelve verdadero si el códec de esta entrada es un alias para otro códec.
Además, MediaCodec.getCanonicalName()
muestra el nombre del códec subyacente para los códecs creados a través de un alias.
Puntos de rendimiento
Un punto de rendimiento representa la capacidad de un códec de procesar video a una altura, un ancho y una velocidad de fotogramas específica. Por ejemplo, el punto de rendimiento UHD_60
representa un video en ultraalta definición (3840 × 2160 píxeles) renderizado a 60 fotogramas por segundo.
El método
MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints()
devuelve una lista de entradas
PerformancePoint
que el códec puede renderizar o capturar.
Puedes verificar si un PerformancePoint
determinado cubre a otro llamando a PerformancePoint.covers(PerformancePoint)
.
Por ejemplo, UHD_60.covers(UHD_50)
devuelve verdadero.
Se proporciona una lista de puntos de rendimiento para todos los códecs acelerados mediante hardware. La lista podría estar vacía si el códec no cumple ni con el punto de rendimiento estándar más bajo.
Ten en cuenta que los dispositivos que se actualizaron a Android 10 (nivel de API 29) y versiones posteriores sin actualizar la imagen del proveedor no tendrán datos de punto de rendimiento, ya que estos datos provienen de la HAL del proveedor. En este caso, getSupportedPerformancePoints()
devuelve un valor nulo.