Zależności OEM dla menedżera zasobów multimediów

Ten dokument jest przeznaczony dla producentów oryginalnego sprzętu (OEM) poprawnie wdrożyć obsługę Menedżera zasobów multimedialnych Androida i powiązanych interfejsów API.

Maksymalna liczba równoczesnych instancji kodeka

Interfejs CodecCapabilities.getMaxSupportedInstances zwraca maksymalną liczbę obsługiwanych równoczesnych instancji kodeka.

Test CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) jest używany do egzekwowania poprawnej wartości maksymalnej ustawionej w /etc/media_codecs.xml

Oto przykład:

...
<MediaCodecs>
    ...
    <Encoders>
        <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" >
           ...
            <Limit name="concurrent-instances" max="13" />
        </MediaCodec>
        ...
    </Encoders>
    ...
</MediaCodecs>

OEM może używać tego testu do wygenerowania równoczesnych limitów, które przejdą test. Aby to zrobić:

  1. Najpierw uruchom test przy użyciu polecenia cts-tradefed.
  2. Oceń wyświetlany komunikat o błędzie. Oto przykład:
    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. Dodaj wiersze (concurrent-instances) sugerowane w teście do pliku /etc/media_codecs.xml.
  4. Uruchom test ponownie, aby sprawdzić, czy się udało.

Liczba klatek w przypadku kodeków wideo

Interfejs VideoCapabilities.getAchievableFrameRatesFor zwraca zakres możliwych do osiągnięcia liczby klatek dla danego rozmiaru filmu. Ten informacje dla każdego urządzenia muszą być podane przez OEM w pliku XML umieszczonym na stronie /etc/media_codecs_performance.xml Te ustawienia są testowane przez com.android.cts.videoperf.VideoEncoderDecoderTest i android.media.cts.VideoDecoderPerfTest testów CTS.

OEM może wykorzystać testy CTS do wygenerowania plików XML, które przejdą pozytywnie testy. Aby to zrobić:

  1. Najpierw uruchom testy za pomocą rozszerzenia cts-tradefed. Biorąc pod uwagę zmienność wydajności Androida, zalecamy przeprowadzenie testów aby uzyskać dokładniejsze wartości minimalne i maksymalne.
  2. Skorzystaj z dostępnej get_achievable_rates.py, aby wygenerować plik XML.
  3. Umieść plik XML w: /etc/media_codecs_performance.xml
    Zwykle należy to zrobić przez umieszczenie pliku XML w projekcie urządzenia. (device/<dostawca>/<produkt>) i dodanie atrybutu PRODUCT_COPY_FILES wiersz do device.mk w taki sposób:
    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. Powtórz testy wydajności, aby sprawdzić skuteczność.

Współistnienie bezpiecznego i niezabezpieczonego kodeka

  • obsługuje „zabezpieczony-kodek-nie-zabezpieczony” – Jeśli wystąpienie bezpiecznego kodeka i wystąpienie niezabezpieczonego kodeka nie jest możliwe współistnieć jednocześnie, co powinno być określane jako ustawienie globalne media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • obsługuje wiele bezpiecznych kodeków – Jeśli współistnienie kilku instancji bezpiecznego kodeka nie jest obsługiwane, należy w pliku media_codecs.xml jako ustawienie globalne.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Oba ustawienia domyślnie mają wartość Prawda, co oznacza, że jeśli są obsługiwane, nie musisz dodawać wiersza ustawienia w polu media_codecs.xml.
  • Testy CTS (ResourceManagerTest) mogą się nie udać, jeśli te 2 ustawienia nie zostaną skonfigurowane bez obaw.