Dipendenze OEM per Media Resource Manager

Questo documento ha lo scopo di aiutare i produttori di apparecchiature originali (OEM) implementare correttamente il supporto per Android Media Resource Manager e le API correlate.

Numero massimo di istanze codec simultanee

Interfaccia di CodecCapabilities.getMaxSupportedInstances restituisce il numero massimo di istanze di codec simultanee supportate.

Test CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) viene utilizzato per applicare il valore massimo corretto /etc/media_codecs.xml.

Ecco un esempio:

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

Gli OEM possono utilizzare questo test per generare in contemporanea i limiti che superano il test. Per:

  1. Esegui prima il test utilizzando cts-tradefed.
  2. Valuta il messaggio di errore risultante. Ecco un esempio:
    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. Aggiungi le concurrent-instances righe suggerite nel test al file /etc/media_codecs.xml.
  4. Esegui di nuovo il test per verificarne l'esito.

Frequenze fotogrammi raggiungibili per i codec video

Interfaccia di VideoCapabilities.getAchievableFrameRatesFor restituisce l'intervallo di frequenze fotogrammi video ottenibili per una dimensione video. Questo le informazioni devono essere fornite dall'OEM per ogni dispositivo tramite un file XML posizionato in /etc/media_codecs_performance.xml. Queste impostazioni vengono testate com.android.cts.videoperf.VideoEncoderDecoderTest e android.media.cts.VideoDecoderPerfTest test CTS.

Gli OEM possono utilizzare i test CTS per generare i file XML che superano i test. Per:

  1. Per prima cosa, esegui i test utilizzando cts-tradefed. Dato il variabilità delle prestazioni di Android, è consigliabile eseguire i test più volte per ottenere valori minimo e massimo più precisi.
  2. Utilizza il get_achievable_rates.py per generare il file XML.
  3. Inserisci il file XML in: /etc/media_codecs_performance.xml
    A questo scopo, di solito inserisci il file XML nel progetto del dispositivo (device/<vendor>/<product>) e aggiungendo un'immagine PRODUCT_COPY_FILES riga a device.mk in questo modo:
    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. Esegui di nuovo i test del rendimento per verificarne l'efficacia.

Coesistenza di codec sicuri e non sicuri

  • supporta-il-codec-sicuro-con-non-sicuro- Se l'istanza del codec sicuro e l'istanza di un codec non sicuro non coesistono contemporaneamente e dovrebbe essere indicata come impostazione globale nel media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • supporta-più-codec-sicuri: Se la coesistenza di più istanze di codec sicuri non è supportata, è necessario indicato come impostazione globale nel file media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Tieni presente che entrambe le impostazioni sono vere per impostazione predefinita, ovvero se sono supportate, non è necessario aggiungere la riga delle impostazioni a media_codecs.xml.
  • I test CTS ResourceManagerTest potrebbero non riuscire se queste due impostazioni non sono state configurate correttamente.