El objetivo de este documento es ayudar a los fabricantes de equipos originales (OEM) Implementar correctamente la compatibilidad con el administrador de recursos multimedia de Android y las APIs relacionadas
Máximo de instancias simultáneas de códecs
La interfaz CodecCapabilities.getMaxSupportedInstances
devuelve la cantidad máxima de instancias simultáneas de códecs admitidas.
La prueba del CTS
testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
se usa para imponer el máximo adecuado se establece 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 la pasan. Para hacer esto:
- 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
concurrent-instances
sugeridas en la prueba. mensaje de error al archivo/etc/media_codecs.xml
. - Vuelve a ejecutar la prueba para verificar que se realizó correctamente.
Velocidades de fotogramas alcanzables para códecs de video
La interfaz VideoCapabilities.getAchievableFrameRatesFor
muestra el rango de velocidades de fotogramas de video que se pueden alcanzar para un tamaño de video. Esta
el OEM debe proporcionar la información para cada dispositivo mediante un archivo en formato XML ubicado en
/etc/media_codecs_performance.xml
Estos parámetros de configuración son probados por
com.android.cts.videoperf.VideoEncoderDecoderTest
y
android.media.cts.VideoDecoderPerfTest
pruebas del CTS
Los OEMs pueden usar las pruebas del CTS para generar los archivos XML que aprueban las pruebas. Para hacer esto:
- Primero, ejecuta las pruebas con cts-tradefed. Dado el variabilidad del rendimiento de Android, se recomienda ejecutar las pruebas varias veces para obtener valores mínimos y máximos más precisos.
- Utiliza el get_achievable_rates.py para generar el archivo en formato XML.
- Coloca el archivo en formato XML en:
/etc/media_codecs_performance.xml
Para ello, se suele colocar el archivo XML en el proyecto del dispositivo. (device/<vendor>/<product>) y agregar unPRODUCT_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 realizaron correctamente.
Coexistencia de códecs seguros y no seguros
- admite-seguro-con-códec no seguro:
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 una configuración global en
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,
se indica como una 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 las dos configuraciones son verdaderas
de forma predeterminada, es decir, si son compatibles
no es necesario agregar la línea de configuración a
media_codecs.xml
. - Las pruebas del CTS de
ResourceManagerTest
pueden fallar si no se establecen estos dos parámetros de configuración correctamente.