Начиная с 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.