Bu doküman, orijinal donanım üreticilerinin (OEM'ler) Android medya kaynağı yöneticisi ve ilgili API'ler için desteği doğru şekilde uygulamalarına yardımcı olmayı amaçlamaktadır.
Maksimum eşzamanlı codec örneği
CodecCapabilities.getMaxSupportedInstances
arayüzü, desteklenen maksimum eşzamanlı codec örneği sayısını döndürür.
CTS testi, testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
/etc/media_codecs.xml
uygun 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, testten geçen eşzamanlı sınırlar oluşturmak için bu testi kullanabilir. Bunu yapmak için:
- Testi önce cts-tradefed kullanarak çalıştırın.
- Sonuç olarak 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ısını doğrulamak için testi yeniden çalıştırın.
Video codec'leri için elde edilebilen kare hızları
VideoCapabilities.getAchievableFrameRatesFor
arayüzü, bir video boyutu için kullanılabilen 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
adresine 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:
- Testleri önce cts-tradefed kullanarak ç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ı şuraya yerleştirin:
/etc/media_codecs_performance.xml
Bu işlem genellikle XML dosyasının cihaz projesine (device/<vendor>/<product>) yerleştirilmesi vedevice.mk
dosyasına aşağıdaki gibi birPRODUCT_COPY_FILES
satırı eklenmesi ile 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ılı olup olmadığını doğrulamak için performans testlerini yeniden çalıştırın.
Güvenli codec ve güvenli olmayan codec'in birlikte kullanılması
- supports-secure-with-non-secure-codec: Güvenli codec örneği ve güvenli olmayan codec örneği aynı anda birlikte bulunamazsa 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 kullanılması desteklenmiyorsa bu durum
media_codecs.xml
dosyasında global 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. Yani destekleniyorlarsa
media_codecs.xml
dosyasına ayar satırını eklemeniz gerekmez. - Bu iki ayar doğru şekilde ayarlanmadıysa
ResourceManagerTest
CTS testleri başarısız olabilir.