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.

Contoh codec serentak maksimal

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

Tes CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) digunakan untuk menerapkan nilai maksimum yang tepat 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 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.

Kecepatan bingkai yang dapat dicapai untuk codec video

Antarmuka VideoCapabilities.getAchievableFrameRatesFor mengembalikan kisaran kecepatan frame 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 CTS com.android.cts.videoperf.VideoEncoderDecoderTest dan android.media.cts.VideoDecoderPerfTest .

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

  1. Jalankan tes terlebih dahulu menggunakan cts-tradefed. Mengingat variabilitas kinerja Android, disarankan agar 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
    Hal ini biasanya dilakukan dengan menempatkan file XML di 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 pengujian kinerja untuk memverifikasi keberhasilannya.

Koeksistensi 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, hal tersebut harus diindikasikan sebagai pengaturan global di file media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • support-multiple-secure-codecs — Jika koeksistensi beberapa contoh codec aman tidak didukung, hal ini 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 tersebut benar secara default, artinya jika keduanya didukung, tidak perlu menambahkan baris pengaturan ke media_codecs.xml .
  • Tes CTS ResourceManagerTest mungkin gagal jika kedua pengaturan ini tidak diatur dengan benar.