Медиакодеки

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