Medya kaynak yöneticisi için OEM bağımlılıkları

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.xmluygun 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:

  1. Testi önce cts-tradefed kullanarak çalıştırın.
  2. 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>
    
  3. Test hatası mesajında önerilen concurrent-instances satırlarını /etc/media_codecs.xml dosyasına ekleyin.
  4. 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:

  1. 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.
  2. XML dosyasını oluşturmak için sağlanan get_achievable_rates.py komut dosyasını kullanın.
  3. 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 ve device.mk dosyasına aşağıdaki gibi bir PRODUCT_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
    
  4. 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.