Данный документ призван помочь производителям оригинального оборудования (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 возвращает диапазон достижимых частот кадров видео для заданного размера видео. Эта информация должна быть предоставлена производителем для каждого устройства через XML-файл, расположенный по адресу /etc/media_codecs_performance.xml . Эти настройки проверяются тестами CTS com.android.cts.videoperf.VideoEncoderDecoderTest и android.media.cts.VideoDecoderPerfTest .
Производители оригинального оборудования (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
- Повторно запустите тесты производительности, чтобы убедиться в их успешном прохождении.
Сосуществование защищенного и незащищенного кодеков
- supports-secure-with-non-secure-codec — Если экземпляр защищенного кодека и экземпляр незащищенного кодека не могут сосуществовать одновременно, это следует указать в качестве глобальной настройки в файле
media_codecs.xml.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> … - supports-multiple-secure-codecs — Если сосуществование нескольких экземпляров защищенных кодеков не поддерживается, это следует указать в качестве глобальной настройки в файле
media_codecs.xml.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> … - Обратите внимание, что оба параметра по умолчанию имеют значение true, то есть, если они поддерживаются, нет необходимости добавлять строку с настройками в файл
media_codecs.xml. - Тесты
ResourceManagerTestCTS могут завершиться неудачей, если эти два параметра были заданы неправильно.