การพึ่งพา 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 และ android.media.cts.VideoDecoderPerfTest CTS

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. รันการทดสอบประสิทธิภาพอีกครั้งเพื่อยืนยันความสำเร็จ

การอยู่ร่วมกันของตัวแปลงสัญญาณที่ปลอดภัยและตัวแปลงสัญญาณที่ไม่ปลอดภัย

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