Questo documento intende aiutare i produttori di apparecchiature originali (OEM) a implementare correttamente il supporto per Android Media Resource Manager e le API correlate.
Numero massimo di istanze di codec simultanee
L'interfaccia CodecCapabilities.getMaxSupportedInstances
restituisce il numero massimo di istanze di codec concorrenti 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 farlo:
- 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 righe
concurrent-instances
suggerite nel messaggio di errore del test al file/etc/media_codecs.xml
. - Esegui di nuovo il test per verificare che sia andato a buon fine.
Frequenze fotogrammi raggiungibili per i codec video
L'interfaccia VideoCapabilities.getAchievableFrameRatesFor
restituisce l'intervallo di frequenze fotogrammi video raggiungibili per una determinata dimensione video. Queste informazioni devono essere fornite dall'OEM per ogni dispositivo tramite un file XML posizionato in /etc/media_codecs_performance.xml
. Queste impostazioni vengono testate tramite i 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 farlo:
- Esegui prima i test utilizzando cts-tradefed. Data la variabilità delle prestazioni di Android, è consigliabile 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.
- Posiziona il file XML in:
/etc/media_codecs_performance.xml
In genere, questo viene fatto posizionando il file XML nel progetto del dispositivo (device/<vendor>/<product>) e aggiungendo una rigaPRODUCT_COPY_FILES
adevice.mk
nel seguente 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 delle prestazioni per verificare che siano andati a buon fine.
Coesistenza di codec sicuri e non sicuri
- supports-secure-with-non-secure-codec: se l'istanza del codec sicuro e l'istanza del codec non sicuro non possono coesistere contemporaneamente, questa impostazione deve essere indicata come impostazione globale nel file
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs:
se la coesistenza di più istanze di codec sicuri non è supportata, deve essere indicada 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 true 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 impostate correttamente.