Dependensi OEM untuk pengelola resource media

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

Instance codec serentak maksimum

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

Pengujian CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) digunakan untuk menerapkan maksimum yang sesuai yang ditetapkan di /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 menghasilkan 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 pesan kegagalan pengujian ke file /etc/media_codecs.xml.
  4. Jalankan kembali 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. Informasi ini harus diberikan oleh OEM untuk setiap perangkat melalui file XML yang ditempatkan di /etc/media_codecs_performance.xml. Setelan ini diuji oleh pengujian CTS com.android.cts.videoperf.VideoEncoderDecoderTest dan android.media.cts.VideoDecoderPerfTest.

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

  1. Jalankan pengujian terlebih dahulu menggunakan cts-tradefed. Mengingat variabilitas performa Android, sebaiknya pengujian dijalankan beberapa kali untuk mendapatkan nilai minimum dan maksimum yang lebih akurat.
  2. Gunakan skrip get_achievable_rates.py yang disediakan untuk membuat file XML.
  3. Tempatkan file XML di: /etc/media_codecs_performance.xml
    Tindakan ini biasanya dilakukan dengan menempatkan file XML dalam project perangkat (device/<vendor>/<product>) dan menambahkan baris PRODUCT_COPY_FILES ke device.mk seperti ini:
    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 tidak aman

  • supports-secure-with-non-secure-codec — Jika instance codec aman dan instance codec tidak aman tidak dapat bersama-sama secara bersamaan, hal tersebut harus ditunjukkan sebagai setelan global dalam file media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • supports-multiple-secure-codecs — Jika keberadaan beberapa instance codec aman tidak didukung, hal tersebut harus 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 tersebut benar secara default, yang berarti jika didukung, Anda tidak perlu menambahkan baris setelan ke media_codecs.xml.
  • Pengujian CTS ResourceManagerTest dapat gagal jika kedua setelan ini tidak ditetapkan dengan benar.