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
muestra la cantidad máxima de instancias de códec simultáneas compatibles.
La prueba de CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
se usa para aplicar el máximo correcto establecido 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 OEMs pueden usar esta prueba para generar los límites simultáneos que aprueban la prueba. Para ello, haz lo siguiente:
- Ejecuta la prueba primero 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
concurrent-instances
sugeridas en el mensaje de error de prueba al archivo/etc/media_codecs.xml
. - Vuelve a ejecutar la prueba para verificar que se haya realizado correctamente.
Velocidades de fotogramas alcanzables para códecs de video
La interfaz VideoCapabilities.getAchievableFrameRatesFor
muestra 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 en formato XML ubicado en /etc/media_codecs_performance.xml
. Las pruebas de CTS com.android.cts.videoperf.VideoEncoderDecoderTest
y android.media.cts.VideoDecoderPerfTest
prueban esta configuración.
Los OEMs pueden usar las pruebas de CTS para generar los archivos en formato XML que las superen. Para ello, haz lo siguiente:
- Ejecuta las pruebas primero con cts-tradefed. Dada la variabilidad del rendimiento de Android, se recomienda que las pruebas se ejecuten 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 en formato XML.
- Coloca el archivo en formato XML en:
/etc/media_codecs_performance.xml
Por lo general, esto se hace colocando el archivo en formato 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ódecs seguros y no seguros
- supports-secure-with-non-secure-codec: Si la instancia del códec seguro y la instancia del códec no seguro no pueden coexistir al mismo tiempo, se debe indicar como 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ódecs seguros, 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
. - Es posible que las pruebas de CTS de
ResourceManagerTest
fallen si estos dos parámetros de configuración no se establecieron correctamente.