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:
- Esegui prima il test utilizzando cts-tradefed.
- 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>
- Aggiungere le righe
concurrent-instances
suggerite nel messaggio di errore del test al file/etc/media_codecs.xml
. - 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:
- 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.
- Utilizza lo script get_achievable_rates.py fornito per generare il file XML.
- 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 rigaPRODUCT_COPY_FILES
adevice.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
- 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.