Códecs de elementos multimedia

A partir de Android 10 (nivel de API 29) y versiones posteriores, existen métodos en MediaCodecInfo que revelan más información sobre un códec:

isSoftwareOnly()
Muestra true si el códec se ejecuta en software solamente. Los códecs de software no garantizan el rendimiento de representación.
isHardwareAccelerated()
Muestra true si un códec se acelera mediante hardware.
isVendor()
Muestra true si el códec se obtiene de un proveedor de dispositivos o false si proviene de 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 muestra true si el códec de esta entrada es un alias para otro códec.

Además, MediaCodec.getCanonicalName() muestra el nombre de 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 representar video a una altura, un ancho y un índice de fotogramas específicos. Por ejemplo, el punto de rendimiento UHD_60 indica un video de definición ultraalta (3840 x 2160 píxeles) representado a 60 fotogramas por segundo.

El método MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() muestra una lista de entradas PerformancePoint que el códec puede representar o capturar.

Puedes verificar si un PerformancePoint determinado abarca otro mediante una llamada a PerformancePoint.covers(PerformancePoint). Por ejemplo, UHD_60.covers(UHD_50) muestra true.

Se proporciona una lista de puntos de rendimiento para todos los códecs acelerados mediante hardware. Esta lista puede estar vacía si el códec no alcanza ni siquiera 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 de proveedor no tendrán datos de puntos de rendimiento, ya que estos datos provienen de la HAL del proveedor. En este caso, getSupportedPerformancePoints() muestra null.