Tài liệu này nhằm giúp các nhà sản xuất thiết bị gốc (OEM) triển khai đúng cách tính năng hỗ trợ cho trình quản lý tài nguyên đa phương tiện Android và các API có liên quan.
Số thực thể bộ mã hoá và giải mã đồng thời tối đa
Giao diện CodecCapabilities.getMaxSupportedInstances
trả về số lượng tối đa các thực thể bộ mã hoá và giải mã đồng thời được hỗ trợ.
Bài kiểm thử CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
được dùng để thực thi mức tối đa thích hợp được đặt trong /etc/media_codecs.xml
.
Dưới đây là ví dụ:
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
Nhà sản xuất thiết bị gốc (OEM) có thể sử dụng quy trình kiểm thử này để tạo các giới hạn đồng thời vượt qua quy trình kiểm thử. Để thực hiện việc này:
- Trước tiên, hãy chạy kiểm thử bằng cts-tradefed.
- Đánh giá thông báo lỗi thu được. Dưới đây là ví dụ:
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>
- Thêm các dòng
concurrent-instances
được đề xuất trong thông báo lỗi kiểm thử vào tệp/etc/media_codecs.xml
. - Chạy lại quy trình kiểm thử để xác minh quy trình đó thành công.
Tốc độ khung hình có thể đạt được cho bộ mã hoá và giải mã video
Giao diện VideoCapabilities.getAchievableFrameRatesFor
trả về phạm vi tốc độ khung hình video có thể đạt được cho một kích thước video. Nhà sản xuất thiết bị gốc phải cung cấp thông tin này cho từng thiết bị thông qua một tệp XML được đặt tại /etc/media_codecs_performance.xml
. Các chế độ cài đặt này được kiểm thử bằng các bài kiểm thử CTS com.android.cts.videoperf.VideoEncoderDecoderTest
và android.media.cts.VideoDecoderPerfTest
.
Nhà sản xuất thiết bị gốc (OEM) có thể sử dụng các bài kiểm thử CTS để tạo các tệp XML vượt qua các bài kiểm thử. Để thực hiện việc này:
- Trước tiên, hãy chạy các chương trình kiểm thử bằng cts-tradefed. Do hiệu suất của Android có thể thay đổi, bạn nên chạy các bài kiểm thử nhiều lần để có được giá trị tối thiểu và tối đa chính xác hơn.
- Sử dụng tập lệnh get_achievable_rates.py được cung cấp để tạo tệp XML.
- Đặt tệp XML tại:
/etc/media_codecs_performance.xml
Bạn thường thực hiện việc này bằng cách đặt tệp XML trong dự án thiết bị (device/<vendor>/<product>) và thêm dòngPRODUCT_COPY_FILES
vàodevice.mk
như sau: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
- Chạy lại các bài kiểm thử hiệu suất để xác minh hiệu quả của các bài kiểm thử đó.
Sự tồn tại đồng thời của bộ mã hoá và giải mã bảo mật và bộ mã hoá và giải mã không bảo mật
- supports-secure-with-non-secure-codec – Nếu thực thể của bộ mã hoá và giải mã bảo mật và thực thể của bộ mã hoá và giải mã không bảo mật không thể cùng tồn tại, thì bạn phải chỉ định thực thể đó là chế độ cài đặt chung trong tệp
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs – Nếu không hỗ trợ việc cùng tồn tại nhiều thực thể bộ mã hoá và giải mã bảo mật, thì bạn phải cho biết điều đó dưới dạng chế độ cài đặt chung trong tệp
media_codecs.xml
.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- Xin lưu ý rằng cả hai chế độ cài đặt đều là true theo mặc định, nghĩa là nếu các chế độ cài đặt này được hỗ trợ, bạn không cần thêm dòng cài đặt vào
media_codecs.xml
. - Các kiểm thử CTS
ResourceManagerTest
có thể không thành công nếu bạn không thiết lập đúng hai chế độ cài đặt này.