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…
- Exécutez d'abord le test en utilisant cts-tradefed.
- É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>
- Ajouter les
concurrent-instances
lignes suggérées lors du test d'échec dans le fichier/etc/media_codecs.xml
. - 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…
- 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.
- Utilisez les get_achievable_rates.py pour générer le fichier XML.
- 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 unPRODUCT_COPY_FILES
endevice.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
- 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.