Bu belge, orijinal donanım üreticilerinin (OEM'ler) Android medya kaynak yöneticisi ve ilgili API'ler için desteği düzgün bir şekilde uygulamasına yardımcı olmayı amaçlamaktadır.
Maksimum eşzamanlı codec örneği sayısı
CodecCapabilities.getMaxSupportedInstances
arayüzü, desteklenen eşzamanlı codec örneği sayısını döndürür.
CTS testi
testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
/etc/media_codecs.xml
'da doğru maksimum değerin ayarlanmasını zorunlu kılmak için kullanılır.
Örnek:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
OEM'ler, testi geçen eşzamanlılık sınırları oluşturmak için bu testi kullanabilir. Bunu yapmak için:
- Önce testi cts-tradefed kullanarak çalıştırın.
- Ortaya çıkan hata mesajını değerlendirin. Örnek:
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>
- Test hatası mesajında önerilen
concurrent-instances
satırlarını/etc/media_codecs.xml
dosyasına ekleyin. - Başarılı olup olmadığını doğrulamak için testi yeniden çalıştırın.
Video codec'leri için elde edilebilir kare hızları
VideoCapabilities.getAchievableFrameRatesFor
arayüzü, bir video boyutu için elde edilebilecek video kare hızlarının aralığını döndürür. Bu bilgiler, OEM tarafından her cihaz için /etc/media_codecs_performance.xml
konumuna yerleştirilen bir XML dosyası aracılığıyla sağlanmalıdır. Bu ayarlar, com.android.cts.videoperf.VideoEncoderDecoderTest
ve android.media.cts.VideoDecoderPerfTest
CTS testleriyle test edilir.
OEM'ler, testleri geçen XML dosyalarını oluşturmak için CTS testlerini kullanabilir. Bunu yapmak için:
- Önce cts-tradefed kullanarak testleri çalıştırın. Android performansının değişkenliği göz önüne alındığında, daha doğru minimum ve maksimum değerler elde etmek için testlerin birden çok kez çalıştırılması önerilir.
- XML dosyasını oluşturmak için sağlanan get_achievable_rates.py komut dosyasını kullanın.
- XML dosyasını şu konuma yerleştirin:
/etc/media_codecs_performance.xml
Bu işlem genellikle XML dosyasını cihaz projesine (device/<vendor>/<product>) yerleştiripdevice.mk
dosyasına şu şekilde birPRODUCT_COPY_FILES
satırı eklenerek yapılır: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
- Başarılarını doğrulamak için performans testlerini yeniden çalıştırın.
Güvenli codec ve güvenli olmayan codec'in birlikte var olması
- supports-secure-with-non-secure-codec —
Güvenli codec örneği ve güvenli olmayan codec örneği aynı anda birlikte
bulunamıyorsa bu durum,
media_codecs.xml
dosyasında genel ayar olarak belirtilmelidir.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs —
Birden fazla güvenli codec örneğinin birlikte bulunması desteklenmiyorsa bu durum,
media_codecs.xml
dosyasında genel bir ayar olarak belirtilmelidir.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Her iki ayarın da varsayılan olarak doğru olduğunu unutmayın. Bu nedenle, destekleniyorsa ayar satırını
media_codecs.xml
'ya eklemeniz gerekmez. - Bu iki ayar düzgün şekilde ayarlanmamışsa
ResourceManagerTest
CTS testleri başarısız olabilir.