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 dịch vụ hỗ trợ cho trình quản lý tài nguyên đa phương tiện Android và các API liên quan.

Số phiên bản codec đồng thời tối đa

Giao diện CodecCapabilities.getMaxSupportedInstances trả về số lượng tối đa các phiên bản codec đồng thời được hỗ trợ.

Bài kiểm thử CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) được dùng để thực thi việc đặt giá trị tối đa thích hợp 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 có thể sử dụng bài kiểm thử này để tạo ra các giới hạn đồng thời vượt qua bài 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 nhận đượ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 bài kiểm thử để xác minh mức độ thành công của bài kiểm thử đó.

Tốc độ khung hình có thể đạt được cho các 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 kiểm thử com.android.cts.videoperf.VideoEncoderDecoderTestandroid.media.cts.VideoDecoderPerfTest CTS.

Cá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 bài kiểm thử. Để thực hiện việc này:

  1. Trước tiên, hãy chạy các 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 kiểm thử nhiều lần để nhận đượ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
    Thường thì bạn sẽ 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 kiểm thử hiệu suất để xác minh mức độ thành công của các kiểm thử đó.

Cùng tồn tại giữa bộ mã hoá và giải mã an toàn và bộ mã hoá và giải mã không an toàn

  • supports-secure-with-non-secure-codec – Nếu phiên bản của codec bảo mật và phiên bản của codec không bảo mật không thể cùng tồn tại, thì bạn nên chỉ định đó 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 của nhiều thực thể codec bảo mật, thì bạn nên chỉ định đó là một 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 đúng theo mặc định, tức là nếu đượ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ử ResourceManagerTest CTS có thể không thành công nếu bạn không đặt đúng cách 2 chế độ cài đặt này.