Dipendenze OEM per il gestore delle risorse multimediali

Questo documento ha lo scopo di aiutare i produttori di apparecchiature originali (OEM) a implementare correttamente il supporto per il gestore delle risorse multimediali Android e le relative API.

Numero massimo di istanze di codec simultanee

L'interfaccia CodecCapabilities.getMaxSupportedInstances restituisce il numero massimo di istanze codec simultanee supportate.

Il test CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) viene utilizzato per applicare il valore massimo corretto impostato in /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 i limiti simultanei che superano il test. Per fare questo:

  1. Esegui prima il test utilizzando cts-tradefed.
  2. Valutare 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. Aggiungere le righe concurrent-instances suggerite nel messaggio di errore del test al file /etc/media_codecs.xml .
  4. Eseguire nuovamente il test per verificarne il successo.

Frame rate ottenibili per i codec video

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

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

  1. Esegui prima i test utilizzando cts-tradefed. Data la variabilità delle prestazioni di Android, si consiglia di eseguire i test più volte per ottenere valori minimi e massimi più accurati.
  2. Utilizza lo script get_achievable_rates.py fornito per generare il file XML.
  3. Inserisci il file XML in: /etc/media_codecs_performance.xml
    Questo di solito viene fatto inserendo il file XML nel progetto del dispositivo (device/ <vendor> / <product> ) e aggiungendo una riga PRODUCT_COPY_FILES 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. Eseguire nuovamente i test delle prestazioni per verificarne il successo.

Coesistenza di codec sicuri e codec non sicuri

  • support-secure-with-non-secure-codec — Se l'istanza del codec sicuro e l'istanza del codec non sicuro non possono coesistere contemporaneamente, ciò dovrebbe essere indicato come impostazione globale nel file media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • support-multiple-secure-codecs — Se la coesistenza di più istanze di codec sicuri non è supportata, ciò dovrebbe essere 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, il che significa che se sono supportate, non è necessario aggiungere la riga di impostazione a media_codecs.xml .
  • I test CTS ResourceManagerTest potrebbero non riuscire se queste due impostazioni non sono state impostate correttamente.