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

Bu belge, özgün donanım üreticilerine (OEM) yardımcı olmak üzere hazırlanmıştır. Android medya kaynak yöneticisi ve ilgili API'ler için desteği doğru şekilde uygulama.

Maksimum eşzamanlı codec örneği sayısı

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). doğru maksimum değerin ayarlanmasını sağlamak için kullanılır /etc/media_codecs.xml.

Ö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ı sınırları oluşturmak için bu testi kullanabilir. Bunu yapmak için:

  1. Önce cts-tradefed komutunu kullanarak testi çalıştırın.
  2. Sonuçta ortaya çıkacak 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. Testte önerilen concurrent-instances satırları ekleyin /etc/media_codecs.xml dosyasına hata mesajı gönderin.
  4. Başarısını doğrulamak için testi yeniden çalıştırın.

Video codec'leri için ulaşılabilir kare hızları

VideoCapabilities.getAchievableFrameRatesFor arayüzü bir video boyutu için ulaşılabilir video kare hızları aralığını döndürür. Bu cihaz bilgileri, OEM tarafından şu adrese yerleştirilmiş bir XML dosyasıyla sağlanmalıdır: /etc/media_codecs_performance.xml Bu ayarlar, com.android.cts.videoperf.VideoEncoderDecoderTest ve android.media.cts.VideoDecoderPerfTest CTS testi.

OEM'ler, testleri geçen XML dosyalarını oluşturmak için CTS testlerini kullanabilir. Bunu yapmak için:

  1. Öncelikle cts-tradefed etiketini kullanarak testleri çalıştırın. Raporda değişkenlik gösterebiliyor. Bu nedenle, testlerin daha doğru minimum ve maksimum değerler elde etmek için birden çok kez.
  2. Sağlanan get_achievable_rates.py komut dosyasını kullanarak XML dosyasını oluşturun.
  3. XML dosyasını şu konuma yerleştirin: /etc/media_codecs_performance.xml
    Bu işlem genellikle XML dosyasının cihaz projesine yerleştirilmesiyle yapılır. (device/<vendor>/<product>) yapıp bir device.mk yönüne giden PRODUCT_COPY_FILES satırı şu şekilde:
    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ılarını doğrulamak için performans testlerini tekrar gerçekleştirin.

Güvenli codec ile güvenli olmayan codec'in birlikte kullanımı

  • Support-secure-with-non-secure-codec — Güvenli codec örneği ve güvenli olmayan codec örneği aynı anda bir arada bulunmalıdır. Bu durum, media_codecs.xml dosyası yükleyin.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Support-Multiple-secure-codec — Birden fazla güvenli codec örneğinin bir arada olması desteklenmiyorsa bu durum media_codecs.xml dosyasında genel ayar olarak belirtilir.
    <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ın media_codecs.xml öğesine eklenmesine gerek yoktur.
  • Bu iki ayar belirtilmezse ResourceManagerTest CTS testi başarısız olabilir gerekir.