本文件旨在協助原始設備製造商 (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) 透過 XML 檔案提供
/etc/media_codecs_performance.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 檔案放入裝置專案中 (裝置/<vendor>/<產品>),然後新增PRODUCT_COPY_FILES
到device.mk
這一行,如下所示: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
- 重新執行效能測試,驗證測試是否成功。
同時採用安全轉碼器與不安全的轉碼器
- Support-safe-with-non-secure-codec —
如果安全轉碼器執行個體與不安全轉碼器的執行個體無法
會在
media_codecs.xml
檔案。<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- Support-multiple-secure-codecs -
如果不支援同時存在多個安全轉碼器執行個體,則應該
在
media_codecs.xml
檔案中顯示為全域設定。<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- 請注意,這兩項設定皆預設為 true
您不需要在
media_codecs.xml
中加入設定行。 - 如未設定這兩項設定,
ResourceManagerTest
CTS 測試可能會失敗 正確做法。