Dependencias de OEM para Media Resource Manager

Este documento está destinado a ayudar a los fabricantes de equipos originales (OEM) a implementar correctamente la compatibilidad con el administrador de recursos multimedia de Android y las API relacionadas.

1. Instancias máximas de códecs concurrentes

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 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 usar esta prueba para generar los límites concurrentes que pasan la prueba. Para hacer esto:

  1. Ejecute la prueba primero con cts-tradefed.
  2. 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>
    
  3. Agregue las líneas concurrent-instances sugeridas en el mensaje de falla de la prueba al archivo /etc/media_codecs.xml .
  4. Vuelva a ejecutar la prueba para verificar su éxito.

2. Velocidades de cuadro alcanzables para códecs de video

La interfaz VideoCapabilities.getAchievableFrameRatesFor devuelve el rango de frecuencias de cuadro 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 son probadas por las pruebas CTS com.android.cts.videoperf.VideoEncoderDecoderTest y android.media.cts.VideoDecoderPerfTest .

Los OEM pueden usar las pruebas CTS para generar los archivos XML que pasan las pruebas. Para hacer esto:

  1. Ejecute las pruebas primero 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.
  2. Utilice el script get_achievable_rates.py proporcionado para generar el archivo XML.
  3. Coloque el archivo XML en: /etc/media_codecs_performance.xml
    Esto generalmente se hace colocando el archivo XML en el proyecto del dispositivo (device/ <vendor> / <product> ) y agregando una línea PRODUCT_COPY_FILES a device.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
    
  4. Vuelva a ejecutar las pruebas de rendimiento para verificar su éxito.

3. Coexistencia de códec seguro y códec no seguro

  • support-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, 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, 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 establecieron correctamente.