OEM-зависимости для менеджера медиаресурсов

Этот документ призван помочь производителям оригинального оборудования (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) могут использовать этот тест для определения пределов одновременной работы, проходящих тест. Для этого:

  1. Сначала запустите тест, используя cts-tradefed.
  2. Оцените полученное сообщение об ошибке. Вот пример:
    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>
    
  3. Добавьте строки concurrent-instances , предложенные в сообщении об ошибке теста, в файл /etc/media_codecs.xml .
  4. Повторите тест, чтобы убедиться в его успешности.

Достижимые частоты кадров для видеокодеков

Интерфейс VideoCapabilities.getAchievableFrameRatesFor возвращает диапазон достижимых частот кадров видео для видео заданного размера. Эта информация должна быть предоставлена ​​OEM-производителем для каждого устройства в XML-файле, расположенном по адресу /etc/media_codecs_performance.xml . Эти настройки проверяются тестами CTS com.android.cts.videoperf.VideoEncoderDecoderTest и android.media.cts.VideoDecoderPerfTest .

Производители оригинального оборудования могут использовать тесты CTS для создания XML-файлов, прошедших тесты. Для этого:

  1. Сначала запустите тесты с помощью cts-tradefed. Учитывая изменчивость производительности Android, рекомендуется проводить тесты несколько раз для получения более точных минимальных и максимальных значений.
  2. Используйте предоставленный скрипт get_achievable_rates.py для генерации XML-файла.
  3. Поместите 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
    
  4. Повторно проведите тесты производительности, чтобы убедиться в их успешности.

Сосуществование безопасного и незащищенного кодеков

  • 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>
    …
    
  • Обратите внимание, что обе настройки по умолчанию установлены верно, то есть, если они поддерживаются, нет необходимости добавлять строку настроек в media_codecs.xml .
  • Тесты ResourceManagerTest CTS могут завершиться неудачей, если эти два параметра не были установлены правильно.