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

Tài liệu này nhằm mục đích giúp các nhà sản xuất thiết bị gốc (OEM) triển khai hỗ trợ đúng cách cho trình quản lý tài nguyên phương tiện Android và các API liên quan.

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

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

Kiểm tra CTS testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) được sử dụng để thực thi mức tối đa thích hợp được đặt trong /etc/media_codecs.xml .

Đây là một ví dụ:

...
<MediaCodecs>
    ...
    <Encoders>
        <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" >
           ...
            <Limit name="concurrent-instances" max="13" />
        </MediaCodec>
        ...
    </Encoders>
    ...
</MediaCodecs>

OEM có thể sử dụng thử nghiệm này để tạo ra các giới hạn đồng thời vượt qua thử nghiệm. Để làm điều này:

  1. Trước tiên hãy chạy thử nghiệm bằng cách sử dụng cts-tradefed.
  2. Đánh giá thông báo lỗi kết quả. Đây là một 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 tra vào tệp /etc/media_codecs.xml .
  4. Chạy lại thử nghiệm để xác minh sự thành công của nó.

Tốc độ khung hình có thể đạt được cho codec 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. Thông tin này phải được OEM cung cấp cho từng thiết bị thông qua tệp XML được đặt tại /etc/media_codecs_performance.xml . Các cài đặt này được kiểm tra bằng các bài kiểm tra com.android.cts.videoperf.VideoEncoderDecoderTestandroid.media.cts.VideoDecoderPerfTest CTS.

OEM có thể sử dụng các bài kiểm tra CTS để tạo các tệp XML vượt qua các bài kiểm tra. Để làm điều này:

  1. Trước tiên hãy chạy thử nghiệm bằng cách sử dụng cts-tradefed. Do hiệu suất của Android luôn thay đổi, nên chạy thử nghiệm 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
    Điều này thường được thực hiện bằng cách đặt tệp XML vào 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 tra hiệu suất để xác minh sự thành công của chúng.

Sự cùng tồn tại của codec an toàn và codec không an toàn

  • hỗ trợ-an toàn-với-không an toàn-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 cùng lúc, thì phiên bản đó phải được biểu thị là cài đặt chung trong tệp media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • hỗ trợ-nhiều-secure-codec — Nếu sự tồn tại cùng tồn tại của nhiều phiên bản codec bảo mật không được hỗ trợ, thì điều đó phải được biểu thị dưới dạng cài đặt chung trong tệp media_codecs.xml .
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • Lưu ý rằng cả hai cài đặt đều đúng theo mặc định, nghĩa là nếu chúng được hỗ trợ thì không cần thêm dòng cài đặt vào media_codecs.xml .
  • Kiểm tra ResourceManagerTest CTS có thể thất bại nếu hai cài đặt này không được đặt đúng cách.