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-instancessatırlarını/etc/media_codecs.xmldosyası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.mkdosyasına şu şekilde birPRODUCT_COPY_FILESsatı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.xmldosyası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.xmldosyası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
ResourceManagerTestCTS testleri başarısız olabilir.