Ten dokument ma pomóc producentom oryginalnego sprzętu (OEM) w prawidłowym wdrażaniu obsługi 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 wymuszania prawidłowego ustawienia maksymalnej wartości 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>
Producenci OEM mogą używać tego testu do generowania limitów współbieżności, które przejdą test. Aby to zrobić:
- Najpierw uruchom test za pomocą cts-tradefed.
- Sprawdź 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 do pliku
/etc/media_codecs.xml
wierszeconcurrent-instances
sugerowane w komunikacie o niepowodzeniu testu. - Ponownie przeprowadź test, aby sprawdzić, czy się powiódł.
Osiągalne liczby klatek w przypadku kodeków wideo
Interfejs VideoCapabilities.getAchievableFrameRatesFor
zwraca zakres możliwych wartości liczby klatek na sekundę dla danego rozmiaru filmu. Te informacje muszą być dostarczone przez producenta OEM dla każdego urządzenia w pliku XML umieszczonym w lokalizacji /etc/media_codecs_performance.xml
. Te ustawienia są testowane przez testy com.android.cts.videoperf.VideoEncoderDecoderTest
i android.media.cts.VideoDecoderPerfTest
CTS.
Producenci OEM mogą używać testów CTS do generowania plików XML, które przejdą testy. Aby to zrobić:
- Najpierw uruchom testy za pomocą cts-tradefed. Ze względu na zmienność wydajności Androida zalecamy wielokrotne przeprowadzanie testów, aby uzyskać dokładniejsze wartości minimalne i maksymalne.
- Aby wygenerować plik XML, użyj podanego skryptu get_achievable_rates.py.
- Umieść plik XML w tym miejscu:
/etc/media_codecs_performance.xml
Zwykle robi się to, umieszczając plik XML w projekcie urządzenia (device/<vendor>/<product>) i dodając wierszPRODUCT_COPY_FILES
dodevice.mk
w ten 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
- Ponownie uruchom testy wydajności, aby sprawdzić, czy się powiodły.
Współistnienie bezpiecznego i niezabezpieczonego kodeka
- supports-secure-with-non-secure-codec – jeśli instancja bezpiecznego kodeka i instancja niezabezpieczonego kodeka nie mogą współistnieć w tym samym czasie, należy to wskazać jako ustawienie globalne w pliku
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs – jeśli współistnienie wielu instancji bezpiecznego kodeka nie jest obsługiwane, należy to wskazać jako ustawienie globalne w pliku
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Pamiętaj, że oba ustawienia są domyślnie prawdziwe, co oznacza, że jeśli są obsługiwane, nie musisz dodawać wiersza ustawień do pliku
media_codecs.xml
. ResourceManagerTest
Testy CTS mogą się nie powieść, jeśli te 2 ustawienia nie zostały prawidłowo skonfigurowane.