เอกสารนี้มีไว้เพื่อช่วยผู้ผลิตอุปกรณ์ดั้งเดิม (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 สามารถใช้การทดสอบนี้เพื่อสร้างขีดจำกัดการเกิดขึ้นพร้อมกันที่ผ่านการทดสอบ โดยทำดังนี้
- เรียกใช้การทดสอบก่อนโดยใช้ cts-tradefed
- ประเมินข้อความแสดงข้อผิดพลาดที่ได้ มีตัวอย่างดังต่อไปนี้
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> - เพิ่มบรรทัด
concurrent-instancesที่แนะนำในข้อความแสดงข้อผิดพลาดของการทดสอบลงในไฟล์/etc/media_codecs.xml - เรียกใช้การทดสอบอีกครั้งเพื่อยืนยันว่าการทดสอบสำเร็จ
อัตราเฟรมที่ทำได้สำหรับตัวแปลงรหัสวิดีโอ
อินเทอร์เฟซ VideoCapabilities.getAchievableFrameRatesFor จะแสดงช่วงอัตราเฟรมวิดีโอที่ทำได้สำหรับขนาดวิดีโอ OEM ต้องระบุข้อมูลนี้สำหรับอุปกรณ์แต่ละเครื่องผ่านไฟล์ XML ที่วางไว้ที่ /etc/media_codecs_performance.xml การทดสอบ CTS com.android.cts.videoperf.VideoEncoderDecoderTest และ android.media.cts.VideoDecoderPerfTest จะทดสอบการตั้งค่าเหล่านี้
OEM สามารถใช้การทดสอบ CTS เพื่อสร้างไฟล์ XML ที่ผ่านการทดสอบ โดยทำดังนี้
- เรียกใช้การทดสอบก่อนโดยใช้ cts-tradefed เนื่องจากประสิทธิภาพของ Android อาจแตกต่างกันไป เราจึงขอแนะนำให้เรียกใช้การทดสอบหลายครั้งเพื่อให้ได้ค่าต่ำสุดและค่าสูงสุดที่แม่นยำยิ่งขึ้น
- ใช้สคริปต์ get_achievable_rates.py ที่ให้ไว้เพื่อสร้างไฟล์ XML
- วางไฟล์ 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
- เรียกใช้การทดสอบประสิทธิภาพอีกครั้งเพื่อยืนยันว่าการทดสอบสำเร็จ
การทำงานร่วมกันของตัวแปลงรหัสที่ปลอดภัยและตัวแปลงรหัสที่ไม่ปลอดภัย
- supports-secure-with-non-secure-codec — หากอินสแตนซ์ของตัวแปลงรหัสที่ปลอดภัยและอินสแตนซ์ของตัวแปลงรหัสที่ไม่ปลอดภัยทำงานร่วมกันไม่ได้ในเวลาเดียวกัน คุณควรระบุการตั้งค่านี้เป็นการตั้งค่าส่วนกลางในไฟล์
media_codecs.xml<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> … - supports-multiple-secure-codecs — หากระบบไม่รองรับการทำงานร่วมกันของอินสแตนซ์ตัวแปลงรหัสที่ปลอดภัยหลายรายการ คุณควรระบุการตั้งค่านี้เป็นการตั้งค่าส่วนกลางในไฟล์
media_codecs.xml<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> … - โปรดทราบว่าการตั้งค่าทั้ง 2 รายการจะเป็นจริงโดยค่าเริ่มต้น ซึ่งหมายความว่าหากระบบรองรับการตั้งค่าเหล่านี้ คุณก็ไม่จำเป็นต้องเพิ่มบรรทัดการตั้งค่าลงใน
media_codecs.xml - การทดสอบ CTS
ResourceManagerTestอาจล้มเหลวหากไม่ได้ตั้งค่าทั้ง 2 รายการนี้อย่างถูกต้อง