Dépendances OEM pour Media Resource Manager

Ce document a pour but d'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

Interface CodecCapabilities.getMaxSupportedInstances renvoie le nombre maximal d'instances de codec simultanées prises en charge.

Le test CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) est utilisée pour faire respecter la valeur maximale /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 de simultanéité qui réussissent le test. Pour…

  1. Exécutez d'abord le test en utilisant cts-tradefed.
  2. Évaluez le message d'échec qui en résulte. 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. Ajouter les concurrent-instances lignes suggérées lors du test d'échec dans le fichier /etc/media_codecs.xml.
  4. Réexécutez le test pour vérifier qu'il a réussi.

Fréquences d'images atteignables pour les codecs vidéo

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

Les OEM peuvent utiliser les tests CTS pour générer des fichiers XML qui réussissent les tests. Pour…

  1. Exécutez d'abord les tests en utilisant cts-tradefed. Étant donné le la variabilité des performances d'Android, nous vous recommandons d'exécuter les tests plusieurs fois pour obtenir des valeurs minimale et maximale plus précises.
  2. Utilisez les get_achievable_rates.py pour générer le fichier XML.
  3. Placez le fichier XML à l'emplacement suivant: /etc/media_codecs_performance.xml
    Pour ce faire, il faut généralement placer le fichier XML dans le projet de l'appareil. (appareil/<vendor>/<product>) et en ajoutant un PRODUCT_COPY_FILES en 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 du codec sécurisé et du codec non sécurisé

  • prend en charge-secure-with-non-secure-codec — Si l'instance du codec sécurisé et l'instance du codec non sécurisé ne peuvent pas coexistent en même temps, qui doit être indiqué comme paramètre global dans media_codecs.xml.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • prend en charge plusieurs codecs sécurisés, Si la coexistence de plusieurs instances de codec sécurisées n'est pas acceptée, 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, c'est-à-dire s'ils sont pris en charge, 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é définis correctement.