Этот документ призван помочь производителям оригинального оборудования (OEM) правильно реализовать поддержку менеджера медиаресурсов Android и связанных API.
Максимальное количество одновременных экземпляров кодека
Интерфейс CodecCapabilities.getMaxSupportedInstances
возвращает максимальное количество поддерживаемых одновременных экземпляров кодека.
Тест CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
используется для обеспечения соблюдения правильного максимума, установленного в /etc/media_codecs.xml
.
Вот пример:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
OEM-производители могут использовать этот тест для определения одновременных ограничений, которые проходят тест. Для этого:
- Сначала запустите тест, используя cts-tradefed.
- Оцените полученное сообщение об ошибке. Вот пример:
There was 1 failure: 1) testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) junit.framework.AssertionFailedError: In order to pass the test, please publish following codecs' concurrent instances limit in /etc/media_codecs.xml: <MediaCodec name="OMX.<vendor>.video.encoder.mpeg4" type="video/mp4v-es" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.h263" type="video/3gpp" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.vp8" type="video/x-vnd.on2.vp8" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.avc" type="video/avc" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.avc.secure" type="video/avc" > <Limit name="concurrent-instances" max="4" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.mpeg4" type="video/mp4v-es" > <Limit name="concurrent-instances" max="12" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.h263" type="video/3gpp" > <Limit name="concurrent-instances" max="12" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.vp8" type="video/x-vnd.on2.vp8" > <Limit name="concurrent-instances" max="12" /> </MediaCodec>
- Добавьте строки
concurrent-instances
, предложенные в сообщении об ошибке теста, в файл/etc/media_codecs.xml
. - Повторно запустите тест, чтобы убедиться в его успешности.
Достижимая частота кадров для видеокодеков
Интерфейс VideoCapabilities.getAchievableFrameRatesFor
возвращает диапазон достижимой частоты кадров видео для определенного размера видео. Эта информация должна быть предоставлена OEM-производителем для каждого устройства через XML-файл, расположенный в /etc/media_codecs_performance.xml
. Эти настройки проверяются с помощью тестов com.android.cts.videoperf.VideoEncoderDecoderTest
и android.media.cts.VideoDecoderPerfTest
CTS.
OEM-производители могут использовать тесты CTS для создания XML-файлов, которые проходят тесты. Для этого:
- Сначала запустите тесты, используя cts-tradefed. Учитывая изменчивость производительности Android, рекомендуется запускать тесты несколько раз, чтобы получить более точные минимальные и максимальные значения.
- Используйте предоставленный сценарий get_achievable_rates.py для создания XML-файла.
- Поместите XML-файл по адресу:
/etc/media_codecs_performance.xml
Обычно это делается путем размещения XML-файла в проекте устройства (device/ <vendor> / <product> ) и добавления строкиPRODUCT_COPY_FILES
вdevice.mk
следующим образом:PRODUCT_COPY_FILES += \ ... device/moto/shamu/media_codecs.xml:system/etc/media_codecs.xml \ + device/moto/shamu/media_codecs_performance.xml:system/etc/media_codecs_performance.xml
- Повторно запустите тесты производительности, чтобы убедиться в их успехе.
Сосуществование безопасного и незащищенного кодека
- support-secure-with-non-secure-codec — если экземпляр безопасного кодека и экземпляр незащищенного кодека не могут сосуществовать одновременно, это должно быть указано как глобальная настройка в файле
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- support-multiple-secure-codecs — если сосуществование нескольких экземпляров безопасных кодеков не поддерживается, это должно быть указано как глобальный параметр в файле
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Обратите внимание, что обе настройки по умолчанию верны, то есть, если они поддерживаются, нет необходимости добавлять строку настройки в файл
media_codecs.xml
. - Тесты
ResourceManagerTest
CTS могут завершиться неудачей, если эти два параметра не установлены правильно.