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