このドキュメントは、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 は、このテストを使用して、テストに合格する同時制限を生成できます。これをする:
- 最初に cts-tradefed を使用してテストを実行します。
- 結果として表示される失敗メッセージを評価します。以下に例を示します:
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>
- テスト失敗メッセージで提案されている
concurrent-instances
行を/etc/media_codecs.xml
ファイルに追加します。 - テストを再実行して、成功を確認します。
ビデオ コーデックの達成可能なフレーム レート
VideoCapabilities.getAchievableFrameRatesFor
インターフェイスは、ビデオ サイズに対して達成可能なビデオ フレーム レートの範囲を返します。この情報は、OEM が/etc/media_codecs_performance.xml
に配置された XML ファイルを介して各デバイスに提供する必要があります。これらの設定は、 com.android.cts.videoperf.VideoEncoderDecoderTest
およびandroid.media.cts.VideoDecoderPerfTest
CTS テストによってテストされます。
OEM は、CTS テストを使用して、テストに合格する XML ファイルを生成できます。これをする:
- 最初に cts-tradefed を使用してテストを実行します。 Android のパフォーマンスにはばらつきがあるため、より正確な最小値と最大値を取得するためにテストを複数回実行することをお勧めします。
- 提供されているget_achievable_rates.pyスクリプトを使用して XML ファイルを生成します。
- 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
に追加することによって行われます。 - パフォーマンス テストを再実行して、成功したことを確認します。
セキュア コーデックと非セキュア コーデックの共存
- 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 テストは失敗する可能性があります。