Dépendances OEM pour le gestionnaire de ressources multimédias

Ce document est destiné à aider les fabricants d'équipement d'origine (OEM) à implémenter correctement la prise en charge du gestionnaire de ressources multimédias Android et des API associées.

Nombre maximal d'instances de codec simultanées

L'interface CodecCapabilities.getMaxSupportedInstances renvoie le nombre maximal d'instances de codec simultanées compatibles.

Le test CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) est utilisé pour appliquer la valeur maximale appropriée dans /etc/media_codecs.xml.

Voici un exemple :

...
<MediaCodecs>
    ...
    <Encoders>
        <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" >
           ...
            <Limit name="concurrent-instances" max="13" />
        </MediaCodec>
        ...
    </Encoders>
    ...
</MediaCodecs>

Les OEM peuvent utiliser ce test pour générer les limites simultanées qui réussissent le test. Pour ce faire :

  1. Exécutez d'abord le test à l'aide de cts-tradefed.
  2. Évaluez le message d'échec généré. Voici un exemple :
    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. Ajoutez les lignes concurrent-instances suggérées dans le message d'échec du test au fichier /etc/media_codecs.xml.
  4. Exécutez à nouveau le test pour vérifier qu'il a réussi.

Fréquences d'images réalisables pour les codecs vidéo

L'interface VideoCapabilities.getAchievableFrameRatesFor renvoie la plage de fréquences d'images vidéo réalisables pour une taille de vidéo. Ces informations doivent être fournies par l'OEM pour chaque appareil via un fichier XML placé dans /etc/media_codecs_performance.xml. Ces paramètres sont testés par les tests CTS com.android.cts.videoperf.VideoEncoderDecoderTest et android.media.cts.VideoDecoderPerfTest.

Les OEM peuvent utiliser les tests CTS pour générer les fichiers XML qui réussissent les tests. Pour ce faire :

  1. Exécutez d'abord les tests à l'aide de cts-tradefed. Étant donné la variabilité des performances d'Android, nous vous recommandons d'exécuter les tests plusieurs fois pour obtenir des valeurs minimales et maximales plus précises.
  2. Utilisez le script get_achievable_rates.py fourni pour générer le fichier XML.
  3. Placez le fichier XML à l'emplacement suivant: /etc/media_codecs_performance.xml
    généralement, en plaçant le fichier XML dans le projet de l'appareil (device/<vendor>/<product>) et en ajoutant une ligne PRODUCT_COPY_FILES à device.mk comme suit:
    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. Réexécutez les tests de performances pour vérifier qu'ils ont réussi.

Coexistence de codecs sécurisés et non sécurisés

  • supports-secure-with-non-secure-codec : si l'instance du codec sécurisé et l'instance du codec non sécurisé ne peuvent pas coexister en même temps, cela doit être indiqué comme paramètre global dans le fichier media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • supports-multiple-secure-codecs : si la coexistence de plusieurs instances de codec sécurisé n'est pas prise en charge, cela doit être indiqué comme paramètre global dans le fichier media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Notez que les deux paramètres sont définis sur "true" par défaut. Par conséquent, s'ils sont compatibles, il n'est pas nécessaire d'ajouter la ligne de paramètre à media_codecs.xml.
  • Les tests CTS ResourceManagerTest peuvent échouer si ces deux paramètres n'ont pas été correctement définis.