Ketergantungan OEM untuk Manajer Sumber Daya Media

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

1. Maks. instans codec bersamaan

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

Tes CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) digunakan untuk menegakkan pengaturan maksimum yang tepat 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 bersamaan yang lulus pengujian. Untuk melakukan ini:

  1. Jalankan tes 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.

2. Kecepatan bingkai yang dapat dicapai untuk codec video

Antarmuka VideoCapabilities.getAchievableFrameRatesFor mengembalikan rentang kecepatan bingkai video yang dapat dicapai untuk ukuran video. Informasi ini harus disediakan oleh OEM untuk setiap perangkat melalui file XML yang ditempatkan di /etc/media_codecs_performance.xml . Setelan ini diuji dengan pengujian com.android.cts.videoperf.VideoEncoderDecoderTest dan android.media.cts.VideoDecoderPerfTest CTS.

OEM dapat menggunakan tes CTS untuk menghasilkan file XML yang lulus tes. Untuk melakukan ini:

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

3. Co-eksistensi codec aman dan codec tidak aman

  • support-secure-with-non-secure-codec — Jika instance codec aman dan instance codec tidak aman tidak dapat hidup berdampingan secara bersamaan, itu harus ditunjukkan sebagai pengaturan global dalam file media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • support-multiple-secure-codec — Jika beberapa instance codec aman tidak didukung, itu harus ditunjukkan sebagai pengaturan global dalam file media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Perhatikan bahwa kedua pengaturan adalah benar secara default, artinya jika didukung, tidak perlu menambahkan baris pengaturan ke media_codecs.xml .
  • Tes CTS ResourceManagerTest mungkin gagal jika kedua pengaturan ini tidak disetel dengan benar.