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

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:

  1. Testi ilk önce cts-tradefed kullanarak çalıştırın.
  2. 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>
    
  3. Test başarısızlığı 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 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:

  1. 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.
  2. XML dosyasını oluşturmak için sağlanan get_achievable_rates.py betiğini kullanın.
  3. XML dosyasını şu konuma yerleştirin: /etc/media_codecs_performance.xml
    Bu genellikle XML dosyasını cihaz projesine (device/ <vendor> / <product> ) yerleştirerek ve device.mk dosyasına şu şekilde bir PRODUCT_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
    
  4. 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.