Dependensi OEM untuk pengelola resource media

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

Instance codec serentak maks.

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

Pengujian CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) digunakan untuk memastikan maksimum yang tepat 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 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 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 jalankan pengujian 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
    Hal ini biasanya dilakukan dengan menempatkan file XML di project perangkat (device/<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 tidak aman

  • supports-secure-with-non-secure-codec — Jika instance codec aman dan instance codec tidak aman tidak dapat berada 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 koeksistensi 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 bernilai 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 disetel dengan benar.