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:
- Esegui prima il test utilizzando cts-tradefed.
- 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>
- Aggiungi le
concurrent-instances
righe suggerite nel test al file/etc/media_codecs.xml
. - 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:
- 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.
- Utilizza il get_achievable_rates.py per generare il file XML.
- 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'immaginePRODUCT_COPY_FILES
riga 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
- 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.