ทรัพยากร Dependency ของ OEM สำหรับตัวจัดการทรัพยากรสื่อ

เอกสารนี้มีวัตถุประสงค์เพื่อช่วยเหลือผู้ผลิตอุปกรณ์ดั้งเดิม (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 ใช้การทดสอบนี้เพื่อสร้างขีดจำกัดจำนวนพร้อมกันที่ผ่านการทดสอบได้ หากต้องการทำสิ่งต่อไปนี้

  1. ทำการทดสอบก่อนโดยใช้ cts-tradefed
  2. ประเมินข้อความแสดงความล้มเหลวที่ได้ มีตัวอย่างดังต่อไปนี้
    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. เพิ่มบรรทัด concurrent-instances ที่แนะนำในการทดสอบ ไปยังไฟล์ /etc/media_codecs.xml ไม่สำเร็จ
  4. ดำเนินการทดสอบอีกครั้งเพื่อยืนยันความสำเร็จ

อัตราเฟรมที่ทำได้สำหรับตัวแปลงรหัสวิดีโอ

อินเทอร์เฟซของ VideoCapabilities.getAchievableFrameRatesFor จะแสดงผลช่วงอัตราเฟรมวิดีโอที่ทำได้สำหรับขนาดวิดีโอ ช่วงเวลานี้ ข้อมูลจะต้องระบุโดย OEM สำหรับอุปกรณ์แต่ละเครื่องผ่านไฟล์ XML ซึ่งวางไว้ที่ /etc/media_codecs_performance.xml การตั้งค่าเหล่านี้ทดสอบโดย com.android.cts.videoperf.VideoEncoderDecoderTest และ การทดสอบ CTS android.media.cts.VideoDecoderPerfTest รายการ

OEM ใช้การทดสอบ CTS เพื่อสร้างไฟล์ XML ที่ผ่านการทดสอบได้ หากต้องการทำสิ่งต่อไปนี้

  1. ทำการทดสอบก่อนโดยใช้ cts-tradefed เนื่องจาก ความแปรปรวนของประสิทธิภาพ Android เราขอแนะนำให้ทำการทดสอบ หลายครั้งเพื่อให้ได้ค่าต่ำสุดและสูงสุดที่แม่นยำมากขึ้น
  2. ใช้ ที่ให้มา get_achievable_rates.py ในการสร้างไฟล์ XML
  3. วางไฟล์ XML ที่: /etc/media_codecs_performance.xml
    โดยการวางไฟล์ XML ไว้ในโปรเจ็กต์ของอุปกรณ์ (device/<vendor>/<product>) และการเพิ่ม 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
    
  4. ทำการทดสอบประสิทธิภาพอีกครั้งเพื่อยืนยันความสำเร็จ

การใช้ตัวแปลงรหัสที่ปลอดภัยและตัวแปลงรหัสที่ไม่ปลอดภัย

  • รองรับ-secure-with-non-code-codec — หากอินสแตนซ์ของตัวแปลงรหัสที่ปลอดภัยและอินสแตนซ์ของตัวแปลงรหัสที่ไม่ปลอดภัยไม่สามารถ อยู่ร่วมกันในเวลาเดียวกัน ซึ่งควรระบุเป็นการตั้งค่าส่วนกลางใน media_codecs.xml ไฟล์
    <MediaCodecs>
        <Settings>
            <Setting name="supports-secure-with-non-secure-codec" value="false" />
        </Settings>
        <Encoders>
    …
    
  • รองรับตัวแปลงรหัสหลายตัวที่ปลอดภัย - หากระบบไม่รองรับการใช้อินสแตนซ์ตัวแปลงรหัสที่ปลอดภัยหลายรายการพร้อมกัน ก็ควร มีการระบุเป็นการตั้งค่าส่วนกลางในไฟล์ media_codecs.xml
    <MediaCodecs>
        <Settings>
            <Setting name="supports-multiple-secure-codecs" value="false" />
        </Settings>
        <Encoders>
    …
    
  • โปรดทราบว่าการตั้งค่าทั้งสองนี้จะเป็นจริงโดยค่าเริ่มต้น ซึ่งหมายความว่าหากระบบรองรับ ไม่จำเป็นต้องเพิ่มบรรทัดการตั้งค่าใน media_codecs.xml
  • การทดสอบ CTS ของ ResourceManagerTest อาจล้มเหลว หากไม่ได้กำหนดการตั้งค่า 2 รายการนี้ อย่างเหมาะสม