OEM-Abhängigkeiten für Media Resource Manager

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

  1. Führen Sie den Test zuerst mit cts-tradefed aus.
  2. 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>
    
  3. Die im Test vorgeschlagenen concurrent-instances-Zeilen hinzufügen Fehlermeldung an die Datei /etc/media_codecs.xml.
  4. 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

  1. 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.
  2. Verwende das bereitgestellte get_achievable_rates.py auf, um die XML-Datei zu generieren.
  3. 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 ein PRODUCT_COPY_FILES-Zeile in device.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
    
  4. 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.