OEM-Abhängigkeiten für den Medienressourcenmanager

Dieses Dokument soll Originalgeräteherstellern (OEMs) dabei helfen, die Unterstützung für Android Media Resource Manager und zugehörige APIs ordnungsgemäß zu implementieren.

Max. gleichzeitige Codec-Instanzen

Die Schnittstelle CodecCapabilities.getMaxSupportedInstances gibt die maximale Anzahl unterstützter gleichzeitiger Codec-Instanzen zurück.

Der CTS-Test testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) wird verwendet, um zu erzwingen, dass das richtige Maximum in /etc/media_codecs.xml festgelegt ist.

Hier ist 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 diesen Test verwenden, um gleichzeitige Grenzwerte zu generieren, die den Test bestehen. Um dies zu tun:

  1. Führen Sie den Test zunächst mit cts-tradefed durch.
  2. Werten Sie die resultierende Fehlermeldung aus. Hier ist 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. Fügen Sie die in der Testfehlermeldung vorgeschlagenen concurrent-instances -Zeilen zur Datei /etc/media_codecs.xml hinzu.
  4. Führen Sie den Test erneut aus, um seinen Erfolg zu überprüfen.

Erreichbare Bildraten für Videocodecs

Die Schnittstelle VideoCapabilities.getAchievableFrameRatesFor gibt den Bereich der erreichbaren Videobildraten für eine Videogröße zurück. Diese Informationen müssen vom OEM für jedes Gerät über eine XML-Datei bereitgestellt werden, die unter /etc/media_codecs_performance.xml abgelegt wird. Diese Einstellungen werden durch die CTS-Tests com.android.cts.videoperf.VideoEncoderDecoderTest und android.media.cts.VideoDecoderPerfTest getestet.

OEMs können die CTS-Tests verwenden, um die XML-Dateien zu generieren, die die Tests bestehen. Um dies zu tun:

  1. Führen Sie die Tests zunächst mit cts-tradefed durch. Angesichts der Variabilität der Android-Leistung wird empfohlen, die Tests mehrmals auszuführen, um genauere Minimal- und Maximalwerte zu erhalten.
  2. Verwenden Sie das bereitgestellte Skript get_achievable_rates.py , um die XML-Datei zu generieren.
  3. Platzieren Sie die XML-Datei unter: /etc/media_codecs_performance.xml
    Dies geschieht normalerweise, indem die XML-Datei im Geräteprojekt (device/ <vendor> / <product> ) platziert und eine PRODUCT_COPY_FILES Zeile zu device.mk hinzugefügt wird, etwa so:
    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 erneut aus, um ihren Erfolg zu überprüfen.

Koexistenz von sicherem Codec und nicht sicherem Codec

  • unterstützt-sicher-mit-nicht-sicherem-codec – Wenn die Instanz des sicheren Codecs und die Instanz des nicht-sicheren Codecs nicht gleichzeitig koexistieren können, sollte dies als globale Einstellung in der Datei media_codecs.xml angegeben werden.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • unterstützt-multiple-sichere-codecs – Wenn die Koexistenz mehrerer sicherer Codec-Instanzen nicht unterstützt wird, sollte dies als globale Einstellung in der Datei media_codecs.xml angegeben werden.
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Beachten Sie, dass beide Einstellungen standardmäßig wahr sind. Wenn sie also unterstützt werden, ist es nicht erforderlich, die Einstellungszeile zur media_codecs.xml hinzuzufügen.
  • Die ResourceManagerTest CTS-Tests schlagen möglicherweise fehl, wenn diese beiden Einstellungen nicht richtig festgelegt wurden.