Este documento tiene como objetivo ayudar a los fabricantes de equipos originales (OEM) a implementar correctamente el soporte para el administrador de recursos multimedia de Android y las API relacionadas.
Máximo de instancias de códec simultáneas
La interfaz CodecCapabilities.getMaxSupportedInstances
devuelve el número máximo de instancias de códec simultáneas admitidas.
La prueba CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
se utiliza para hacer cumplir el máximo adecuado establecido en /etc/media_codecs.xml
.
Aquí hay 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 utilizar esta prueba para generar los límites simultáneos que pasan la prueba. Para hacer esto:
- Primero ejecute la prueba usando cts-tradefed.
- Evalúe el mensaje de error resultante. Aquí hay 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>
- Agregue las líneas
concurrent-instances
sugeridas en el mensaje de error de prueba al archivo/etc/media_codecs.xml
. - Vuelva a ejecutar la prueba para verificar su éxito.
Velocidades de fotogramas alcanzables para códecs de vídeo
La interfaz VideoCapabilities.getAchievableFrameRatesFor
devuelve el rango de velocidades de cuadros 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
. Estas configuraciones se prueban mediante las pruebas CTS com.android.cts.videoperf.VideoEncoderDecoderTest
y android.media.cts.VideoDecoderPerfTest
.
Los OEM pueden utilizar las pruebas CTS para generar los archivos XML que pasan las pruebas. Para hacer esto:
- Primero ejecute las pruebas usando 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.
- Utilice el script get_achievable_rates.py proporcionado para generar el archivo XML.
- Coloque el archivo XML en:
/etc/media_codecs_performance.xml
Esto generalmente se hace colocando el archivo XML en el proyecto del dispositivo (dispositivo/ <vendor> / <product> ) y agregando una líneaPRODUCT_COPY_FILES
adevice.mk
así: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
- Vuelva a ejecutar las pruebas de rendimiento para verificar su éxito.
Coexistencia de códec seguro y códec no seguro
- support-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, eso debe indicarse como configuración global en el archivo
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- support-multiple-secure-codecs: si no se admite la coexistencia de varias instancias de códecs seguros, esto debe indicarse como una configuración global en el archivo
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Tenga en cuenta que ambas configuraciones son verdaderas 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 CTS
ResourceManagerTest
pueden fallar si estas dos configuraciones no se configuraron correctamente.