Медиакодеки

Начиная с Android 10 (уровень API 29) и выше, в MediaCodecInfo есть методы, которые раскрывают дополнительную информацию о кодеке:

isSoftwareOnly()
Возвращает true, если кодек работает только программно. Программные кодеки не дают никаких гарантий относительно производительности рендеринга.
isHardwareAccelerated()
Возвращает true, если кодек ускоряется аппаратно.
isVendor()
Возвращает true, если кодек предоставлен производителем устройства, или false, если он предоставлен платформой Android.
isAlias()
MediaCodecList может содержать дополнительные записи для того же базового кодека, используя альтернативные имена кодеков (псевдонимы). Этот метод возвращает значение true, если кодек в этой записи является псевдонимом другого кодека.

Кроме того, MediaCodec.getCanonicalName() возвращает базовое имя кодека для кодеков, созданных с помощью псевдонима.

Очки производительности

Очки производительности представляют собой способность кодека отображать видео с определенной высотой, шириной и частотой кадров. Например, точка производительности UHD_60 соответствует видео сверхвысокой четкости (3840x2160 пикселей), отображаемому со скоростью 60 кадров в секунду.

Метод MediaCodecInfo.VideoCapabilities.getSupportedPerformancePoints() возвращает список записей PerformancePoint , которые кодек может визуализировать или захватить.

Вы можете проверить, покрывает ли данный PerformancePoint другой, вызвав PerformancePoint.covers(PerformancePoint) . Например, UHD_60.covers(UHD_50) возвращает true.

Список показателей производительности предоставляется для всех кодеков с аппаратным ускорением. Это может быть пустой список, если кодек не соответствует даже самому низкому стандартному уровню производительности.

Обратите внимание, что устройства, которые были обновлены до Android 10 (уровень API 29) и выше без обновления образа поставщика, не будут иметь данных о баллах производительности, поскольку эти данные поступают от HAL поставщика. В этом случае getSupportedPerformancePoints() возвращает значение null.