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

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

Nombre maximal d'instances de codecs simultanées

L'interface CodecCapabilities.getMaxSupportedInstances renvoie le nombre maximum d'instances de codecs simultanées prises en charge.

Le test CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) est utilisé pour appliquer le maximum approprié défini 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 faire ça:

  1. Exécutez d'abord le test en utilisant cts-tradefed.
  2. Évaluez le message d’échec résultant. 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. Réexécutez le test pour vérifier son succès.

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 com.android.cts.videoperf.VideoEncoderDecoderTest et android.media.cts.VideoDecoderPerfTest CTS.

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

  1. Exécutez d'abord les tests en utilisant cts-tradefed. Compte tenu de la variabilité des performances d'Android, il est recommandé 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 dans : /etc/media_codecs_performance.xml
    Cela se fait généralement en plaçant le fichier XML dans le projet de périphérique (device/ <vendor> / <product> ) et en ajoutant une ligne PRODUCT_COPY_FILES à device.mk comme ceci :
    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 leur réussite.

Coexistence de codec sécurisé et de codec non sécurisé

  • supports-secure-with-non-secure-codec — Si l'instance de codec sécurisé et l'instance de 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 codecs sécurisés 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 vrais par défaut, ce qui signifie que s'ils sont pris en charge, il n'est pas nécessaire d'ajouter la ligne de paramètre au media_codecs.xml .
  • Les tests ResourceManagerTest CTS peuvent échouer si ces deux paramètres n’ont pas été définis correctement.