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ć:
- Najpierw uruchom test przy użyciu polecenia cts-tradefed.
- 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>
- Dodaj wiersze (
concurrent-instances
) sugerowane w teście do pliku/etc/media_codecs.xml
. - 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ć:
- 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.
- Skorzystaj z dostępnej get_achievable_rates.py, aby wygenerować plik XML.
- 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 atrybutuPRODUCT_COPY_FILES
wiersz dodevice.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
- 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.