Dieses Dokument richtet sich an Erstausrüster (OEMs) die Unterstützung für Android Media Resource Manager und zugehörige APIs korrekt zu implementieren.
Maximale Anzahl gleichzeitiger Codec-Instanzen
Die CodecCapabilities.getMaxSupportedInstances
-Schnittstelle
gibt die maximale Anzahl unterstützter Codec-Instanzen zurück.
Der CTS-Test
testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
wird verwendet, um durchzusetzen,
dass das korrekte Maximum in
/etc/media_codecs.xml
.
Hier ein Beispiel:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
OEMs können mit diesem Test die Limits für die gleichzeitige Nutzung generieren, die den Test bestehen. Ziel
- Führen Sie den Test zuerst mit cts-tradefed aus.
- Bewerten Sie die resultierende Fehlermeldung. Hier ein Beispiel:
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>
- Die im Test vorgeschlagenen
concurrent-instances
-Zeilen hinzufügen Fehlermeldung an die Datei/etc/media_codecs.xml
. - Führen Sie den Test noch einmal aus, um den Erfolg zu überprüfen.
Erreichbare Frame-Rates für Video-Codecs
Die VideoCapabilities.getAchievableFrameRatesFor
-Schnittstelle
gibt den Bereich der erreichbaren Video-Framerates für eine Videogröße zurück. Dieses
Informationen müssen vom OEM für jedes Gerät in Form einer XML-Datei bereitgestellt werden, die sich unter
/etc/media_codecs_performance.xml
Diese Einstellungen werden von
com.android.cts.videoperf.VideoEncoderDecoderTest
und
android.media.cts.VideoDecoderPerfTest
CTS-Tests.
OEMs können die CTS-Tests verwenden, um die XML-Dateien zu generieren, die die Tests bestehen. Ziel
- Führen Sie die Tests zuerst mit cts-tradefed aus. In Anbetracht der Variabilität der Android-Leistung empfehlen, sollten die Tests um genauere Minimal- und Maximalwerte zu erhalten.
- Verwende das bereitgestellte get_achievable_rates.py auf, um die XML-Datei zu generieren.
- Platzieren Sie die XML-Datei unter:
/etc/media_codecs_performance.xml
Dazu wird normalerweise die XML-Datei im Geräteprojekt abgelegt (device/<vendor>/<product>) und fügen Sie einPRODUCT_COPY_FILES
-Zeile indevice.mk
, wie hier: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
- Führen Sie die Leistungstests noch einmal aus, um den Erfolg zu überprüfen.
Sicherer und nicht sicherer Codec nebeneinander vorhanden
- unterstützt-secure-with-non-secure-codec —
Wenn die Instanz des sicheren und die Instanz des nicht sicheren Codecs
gleichzeitig existieren, sollte dies als globale Einstellung im
media_codecs.xml
-Datei.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- unterstützt-multiple-secure-codecs —
Wenn die gleichzeitige Existenz mehrerer sicherer Codec-Instanzen nicht unterstützt wird,
in der Datei
media_codecs.xml
als globale Einstellung angegeben.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Beide Einstellungen sind standardmäßig auf "true" gesetzt,
d. h., wenn sie unterstützt werden,
muss die Einstellungszeile nicht zum
media_codecs.xml
hinzugefügt werden. - Die CTS-Tests für
ResourceManagerTest
können fehlschlagen, wenn diese beiden Einstellungen nicht festgelegt wurden ordnungsgemäß funktioniert.