Dependensi OEM untuk resource manager media

Dokumen ini dimaksudkan untuk membantu produsen peralatan asli (OEM) mengimplementasikan dukungan dengan benar bagi pengelola resource media Android dan API terkait.

Instance codec serentak maksimum

Antarmuka CodecCapabilities.getMaxSupportedInstances mengembalikan jumlah maksimum instance codec serentak yang didukung.

Uji CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) digunakan untuk memberlakukan batas maksimum yang sesuai dalam /etc/media_codecs.xml.

Berikut ini contohnya:

...
<MediaCodecs>
    ...
    <Encoders>
        <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" >
           ...
            <Limit name="concurrent-instances" max="13" />
        </MediaCodec>
        ...
    </Encoders>
    ...
</MediaCodecs>

OEM dapat menggunakan pengujian ini untuk membuat batas serentak yang lulus pengujian. Untuk melakukannya:

  1. Jalankan pengujian terlebih dahulu menggunakan cts-tradefed.
  2. Evaluasi pesan kegagalan yang dihasilkan. Berikut ini contohnya:
    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. Tambahkan baris concurrent-instances yang disarankan dalam pengujian pesan kegagalan ke file /etc/media_codecs.xml.
  4. Jalankan ulang pengujian untuk memverifikasi keberhasilannya.

Kecepatan frame yang dapat dicapai untuk codec video

Antarmuka VideoCapabilities.getAchievableFrameRatesFor menampilkan rentang kecepatan frame video yang dapat dicapai untuk ukuran video. Ini informasi harus disediakan oleh OEM untuk setiap perangkat melalui file XML yang ditempatkan di /etc/media_codecs_performance.xml. Setelan ini diuji oleh com.android.cts.videoperf.VideoEncoderDecoderTest dan android.media.cts.VideoDecoderPerfTest uji CTS.

OEM dapat menggunakan pengujian CTS untuk menghasilkan file XML yang lulus pengujian. Untuk melakukannya:

  1. Jalankan pengujian terlebih dahulu menggunakan cts-tradefed. Mengingat variabilitas performa Android, sebaiknya jalankan pengujian beberapa kali untuk mendapatkan nilai minimum dan maksimum yang lebih akurat.
  2. Gunakan yang disediakan get_achievable_rates.py untuk menghasilkan file XML.
  3. Tempatkan file XML di: /etc/media_codecs_performance.xml
    Ini biasanya dilakukan dengan menempatkan file XML dalam proyek perangkat (perangkat/<vendor>/<product>) dan menambahkan Baris PRODUCT_COPY_FILES ke device.mk seperti berikut:
    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. Jalankan kembali pengujian performa untuk memverifikasi keberhasilannya.

Koeksistensi codec aman dan codec yang tidak aman

  • Support-secure-with-non-secure-codec — Jika codec aman dan instance codec yang tidak aman tidak berjalan berdampingan pada waktu yang sama, yang harus diindikasikan sebagai latar global dalam File media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • mendukung-multiple-secure-codec — Jika koeksistensi beberapa instance codec yang aman tidak didukung, maka ditunjukkan sebagai setelan global dalam file media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Perhatikan bahwa kedua setelan adalah benar secara default, yang berarti jika keduanya didukung, tidak perlu menambahkan baris setelan ke media_codecs.xml.
  • Uji CTS ResourceManagerTest mungkin gagal jika kedua setelan ini tidak ditetapkan mereka dapat terus berjalan dengan baik.