El objetivo de este documento es ayudar a los fabricantes de equipos originales (OEM) a implementar correctamente la compatibilidad con el administrador de recursos multimedia de Android y las APIs relacionadas.
Cantidad máxima de instancias de códec simultáneas
La interfaz CodecCapabilities.getMaxSupportedInstances
devuelve la cantidad máxima de instancias de códec simultáneas admitidas.
La prueba de CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
se usa para garantizar que se establezca el máximo adecuado en /etc/media_codecs.xml
.
A continuación, se muestra un ejemplo:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
Los OEM pueden usar esta prueba para generar los límites simultáneos que la superan. Para ello, haz lo siguiente:
- Primero, ejecuta la prueba con cts-tradefed.
- Evalúa el mensaje de error resultante. A continuación, se muestra un ejemplo:
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>
- Agrega las líneas de
concurrent-instances
que se sugieren en el mensaje de error de la prueba al archivo/etc/media_codecs.xml
. - Vuelve a ejecutar la prueba para verificar que se haya completado correctamente.
Velocidades de fotogramas alcanzables para los códecs de video
La interfaz de VideoCapabilities.getAchievableFrameRatesFor
devuelve el rango de velocidades de fotogramas de video alcanzables para un tamaño de video. El OEM debe proporcionar esta información para cada dispositivo a través de un archivo XML ubicado en /etc/media_codecs_performance.xml
. Los parámetros de configuración se prueban con las pruebas de CTS com.android.cts.videoperf.VideoEncoderDecoderTest
y android.media.cts.VideoDecoderPerfTest
.
Los OEM pueden usar las pruebas del CTS para generar los archivos XML que aprueban las pruebas. Para ello, haz lo siguiente:
- Primero, ejecuta las pruebas con cts-tradefed. Dada la variabilidad del rendimiento de Android, se recomienda ejecutar las pruebas varias veces para obtener valores mínimos y máximos más precisos.
- Usa la secuencia de comandos get_achievable_rates.py proporcionada para generar el archivo XML.
- Coloca el archivo XML en
/etc/media_codecs_performance.xml
. Por lo general, esto se hace colocando el archivo XML en el proyecto del dispositivo (device/<vendor>/<product>) y agregando una líneaPRODUCT_COPY_FILES
adevice.mk
de la siguiente manera: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
- Vuelve a ejecutar las pruebas de rendimiento para verificar que se hayan realizado correctamente.
Coexistencia de códec seguro y códec no seguro
- supports-secure-with-non-secure-codec: Si la instancia de códec seguro y la instancia de códec no seguro no pueden coexistir al mismo tiempo, esto se debe indicar como un parámetro de configuración global en el archivo
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs: Si no se admite la coexistencia de varias instancias de códec seguro, esto se debe indicar como un parámetro de configuración global en el archivo
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Ten en cuenta que ambos parámetros de configuración son verdaderos de forma predeterminada, lo que significa que, si son compatibles, no es necesario agregar la línea de configuración a
media_codecs.xml
. - Las pruebas de
ResourceManagerTest
CTS pueden fallar si estos dos parámetros de configuración no se establecieron correctamente.