Phần phụ thuộc OEM cho trình quản lý tài nguyên đa phương tiện

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:

  1. Trước tiên, hãy chạy kiểm thử bằng cts-tradefed.
  2. Đá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>
    
  3. 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.
  4. 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.VideoEncoderDecoderTestandroid.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:

  1. 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.
  2. Sử dụng tập lệnh get_achievable_rates.py được cung cấp để tạo tệp XML.
  3. Đặ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òng PRODUCT_COPY_FILES vào device.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
    
  4. 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.