メディア リソース マネージャーの OEM 依存関係

このドキュメントは、OEM が Android メディア リソース マネージャーと関連 API のサポートを適切に実装できるようにすることを目的としています。

最大同時コーデック インスタンス数

CodecCapabilities.getMaxSupportedInstancesインターフェイスは、サポートされる同時コーデック インスタンスの最大数を返します。

CTS テストtestGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) /etc/media_codecs.xmlに適切な最大値が設定されるようにするために使用されます。

以下に例を示します。

...
<MediaCodecs>
    ...
    <Encoders>
        <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" >
           ...
            <Limit name="concurrent-instances" max="13" />
        </MediaCodec>
        ...
    </Encoders>
    ...
</MediaCodecs>

OEM は、このテストを使用して、テストに合格する同時制限を生成できます。これをする:

  1. 最初に cts-tradefed を使用してテストを実行します。
  2. 結果として表示される失敗メッセージを評価します。以下に例を示します:
    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. テスト失敗メッセージで提案されているconcurrent-instances行を/etc/media_codecs.xmlファイルに追加します。
  4. テストを再実行して、成功を確認します。

ビデオ コーデックの達成可能なフレーム レート

VideoCapabilities.getAchievableFrameRatesForインターフェイスは、ビデオ サイズに対して達成可能なビデオ フレーム レートの範囲を返します。この情報は、OEM が/etc/media_codecs_performance.xmlに配置された XML ファイルを介して各デバイスに提供する必要があります。これらの設定は、 com.android.cts.videoperf.VideoEncoderDecoderTestおよびandroid.media.cts.VideoDecoderPerfTest CTS テストによってテストされます。

OEM は、CTS テストを使用して、テストに合格する XML ファイルを生成できます。これをする:

  1. 最初に cts-tradefed を使用してテストを実行します。 Android のパフォーマンスにはばらつきがあるため、より正確な最小値と最大値を取得するためにテストを複数回実行することをお勧めします。
  2. 提供されているget_achievable_rates.pyスクリプトを使用して XML ファイルを生成します。
  3. XML ファイルを/etc/media_codecs_performance.xmlに配置します。
    これは通常、XML ファイルをデバイス プロジェクト (device/ <vendor> / <product> ) に配置し、
    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
    
    のようにPRODUCT_COPY_FILES行をdevice.mkに追加することによって行われます。
  4. パフォーマンス テストを再実行して、成功したことを確認します。

セキュア コーデックと非セキュア コーデックの共存

  • Supports-secure-with-non-secure-codec — セキ​​ュア コーデックのインスタンスと非セキュア コーデックのインスタンスが同時に共存できない場合は、 media_codecs.xmlファイルのグローバル設定としてそのことを示す必要があります。
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Supports-multiple-secure-codecs — 複数の安全なコーデック インスタンスの共存がサポートされていない場合は、 media_codecs.xmlファイル内のグローバル設定として示す必要があります。
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • 両方の設定がデフォルトで true であることに注意してください。つまり、それらがサポートされている場合は、設定行をmedia_codecs.xmlに追加する必要はありません。
  • これら 2 つの設定が正しく設定されていない場合、 ResourceManagerTest CTS テストは失敗する可能性があります。