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

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:

  1. Önce testi cts-tradefed kullanarak çalıştırın.
  2. 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ı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:

  1. Ö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.
  2. XML dosyasını oluşturmak için sağlanan get_achievable_rates.py komut dosyasını kullanın.
  3. 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ştirip device.mk dosyasına şu şekilde bir PRODUCT_COPY_FILES satı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
    
  4. 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.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 bulunması desteklenmiyorsa bu durum, 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 unutmayın. Bu nedenle, destekleniyorsa ayar satırını media_codecs.xml'ya eklemeniz gerekmez.
  • Bu iki ayar düzgün şekilde ayarlanmamışsa ResourceManagerTest CTS testleri başarısız olabilir.