Bu belgenin amacı, orijinal ekipman üreticilerinin (OEM'ler) Android medya kaynak yöneticisi ve ilgili API'ler için desteği doğru şekilde uygulamasına yardımcı olmaktır.
Maksimum eşzamanlı codec örnekleri
CodecCapabilities.getMaxSupportedInstances
arabirimi, desteklenen eşzamanlı codec örneklerinin maksimum sayısını döndürür.
CTS testi testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
/etc/media_codecs.xml
dosyasında uygun maksimum ayarın uygulanmasını sağlamak için kullanılır.
İşte bir örnek:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
OEM'ler bu testi testi geçen eş zamanlı limitleri oluşturmak için kullanabilir. Bunu yapmak için:
- Testi ilk önce cts-tradefed kullanarak çalıştırın.
- Ortaya çıkan başarısızlık mesajını değerlendirin. İşte bir ö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 başarısızlığı 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 bileşenleri için ulaşılabilir kare hızları
VideoCapabilities.getAchievableFrameRatesFor
arayüzü, bir video boyutu için ulaşılabilir video kare hızlarının aralığını döndürür. Bu bilgilerin OEM tarafından her cihaz için /etc/media_codecs_performance.xml
dosyasına yerleştirilen bir XML dosyası aracılığıyla sağlanması gerekir. Bu ayarlar com.android.cts.videoperf.VideoEncoderDecoderTest
ve android.media.cts.VideoDecoderPerfTest
CTS testleri tarafından test edilir.
OEM'ler testleri geçen XML dosyalarını oluşturmak için CTS testlerini kullanabilir. Bunu yapmak için:
- Testleri ilk ö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 betiğini kullanın.
- XML dosyasını şu konuma yerleştirin:
/etc/media_codecs_performance.xml
Bu genellikle XML dosyasını cihaz projesine (device/ <vendor> / <product> ) yerleştirerek vedevice.mk
dosyasına şu şekilde birPRODUCT_COPY_FILES
satırı ekleyerek 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 bileşeninin ve güvenli olmayan codec bileşeninin bir arada bulunması
- güvenli olmayan codec bileşeniyle güvenli olanı destekler — Güvenli codec bileşeni örneği ile güvenli olmayan codec bileşeni örneği aynı anda bir arada bulunamazsa, bunun
media_codecs.xml
dosyasında genel ayar olarak belirtilmesi gerekir.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- destekler-multiple-secure-codecs — Birden fazla güvenli codec örneğinin bir arada bulunması desteklenmiyorsa bu,
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, yani destekleniyorlarsa ayar satırını
media_codecs.xml
dosyasına eklemeye gerek olmadığını unutmayın. - Bu iki ayar düzgün ayarlanmazsa
ResourceManagerTest
CTS testleri başarısız olabilir.