Dependencias de OEM para el administrador de recursos de medios

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:

  1. Primero, ejecuta la prueba con cts-tradefed.
  2. 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>
    
  3. Agrega las líneas concurrent-instances sugeridas en la prueba. mensaje de error al archivo /etc/media_codecs.xml.
  4. 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:

  1. 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.
  2. Utiliza el get_achievable_rates.py para generar el archivo en formato XML.
  3. 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 un PRODUCT_COPY_FILES a device.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
    
  4. 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.