คำสำคัญ MUST, MUST NOT, SHOULD และ STRONGLY RECOMMENDED ในหน้านี้ มีความหมายตามที่อธิบายไว้ใน RFC 2119
ระบบ Guest (อิมเมจ VM)
ข้อกำหนดในส่วนนี้ใช้กับระบบ Guest
หน่วยความจำ
ระบบต้องมีหน่วยความจำอย่างน้อย 2 GB ต่อ VM
อินเทอร์เฟซแบบไบนารีของแอปพลิเคชัน
การใช้งานอุปกรณ์
- ต้องเข้ากันได้กับ ABI ของ Android NDK อย่างน้อย 1 รายการที่กำหนดไว้
- ต้องใช้ ABI ของ Android NDK เดียวกันสำหรับอิมเมจ VM ทั้งหมดในอุปกรณ์เครื่องเดียวกัน
- ต้องเข้ากันได้กับซอร์สโค้ด (เช่น เข้ากันได้กับส่วนหัว) และเข้ากันได้กับไบนารี (สำหรับ ABI) กับไลบรารีที่จำเป็นแต่ละรายการในรายการต่อไปนี้
ต้องทำให้ไลบรารีต่อไปนี้ทั้งหมดซึ่งมี API ดั้งเดิมพร้อมใช้งานสำหรับแอปพลิเคชันยานยนต์ที่กำหนดโดยซอฟต์แวร์ (SDV)
libc(ไลบรารี C)libdl(ตัวลิงก์แบบไดนามิก)libdrm.so(ไลบรารีพื้นที่ผู้ใช้ของ Direct Rendering Manager)libgbm.so(การจัดการบัฟเฟอร์ทั่วไป)libEGL.so(การจัดการพื้นผิว OpenGL ดั้งเดิม)libGLESv1_CM.so(OpenGL ES 1.x)libGLESv2.so(OpenGL ES 2.0)libGLESv3.so(OpenGL ES 3.x)liblog(การบันทึกของ Android)libtinyalsav2.so(เสียงที่บันทึกไว้และการเล่นเสียง)libvulkan.so(Vulkan)
ต้องไม่เพิ่มหรือนำฟังก์ชันสาธารณะสำหรับไลบรารีดั้งเดิมก่อนหน้าออก
ต้องส่งออกสัญลักษณ์ฟังก์ชัน OpenGL ES 3.1 และ Android Extension Pack ทั้งหมดตามที่กำหนดไว้ใน NDK ผ่านไลบรารี libGLESv3.so โปรดทราบว่าแม้ว่าสัญลักษณ์ทั้งหมดจะต้องมีอยู่ แต่ OpenGL ES จะอธิบายข้อกำหนดโดยละเอียดเพิ่มเติมเกี่ยวกับเวลาที่คาดว่าจะมีการใช้งาน ฟังก์ชันที่เกี่ยวข้องแต่ละฟังก์ชันอย่างเต็มรูปแบบ
ต้องส่งออกสัญลักษณ์ฟังก์ชันหลักของ Vulkan 1.1 รวมถึงส่วนขยาย
VK_KHR_surface,VK_KHR_swapchain,VK_KHR_maintenance1และVK_KHR_get_physical_device_properties2ผ่านไลบรารีlibvulkan.soโปรดทราบว่าแม้ว่าสัญลักษณ์ทั้งหมดจะต้องมีอยู่ Vulkan จะอธิบายข้อกำหนดโดยละเอียดเพิ่มเติมเกี่ยวกับเวลาที่คาดว่าจะมีการใช้งาน ฟังก์ชันที่เกี่ยวข้องแต่ละฟังก์ชันอย่างเต็มรูปแบบควรสร้างโดยใช้ซอร์สโค้ดและไฟล์ส่วนหัวที่มีอยู่ใน Android Open Source Project ต้นทาง
กราฟิก
ระบบต้องใช้ virtio-gpu สำหรับกราฟิกที่เร่งการแสดงผลด้วยฮาร์ดแวร์ ไดรเวอร์ฝั่ง Guest ควรใช้ gfxstream สำหรับการแสดงผล
อินพุต
ระบบ Guest ต้องรองรับเหตุการณ์อินพุตที่ส่งต่อจากระบบโฮสต์โดยใช้ virtio-input
OpenGL ES
การใช้งานอุปกรณ์
- ต้องระบุเวอร์ชัน OpenGL ES ที่รองรับ (1.1, 2.0, 3.0, 3.1, 3.2) อย่างถูกต้องผ่าน API ดั้งเดิม
- ต้องรองรับ API ดั้งเดิมที่เกี่ยวข้องทั้งหมดสำหรับ OpenGL ES ทุกเวอร์ชันที่รองรับ
- ต้องรองรับทั้ง OpenGL ES 1.1 และ 2.0
- ขอแนะนำอย่างยิ่งให้รองรับ OpenGL ES 3.1
- ควรรองรับ OpenGL ES 3.2
- ต้องรายงานโดยใช้ API ที่จัดการของ OpenGL ES และ API ดั้งเดิม ส่วนขยาย OpenGL ES อื่นๆ ที่ได้นำไปใช้ และในทางกลับกัน ต้องไม่รายงานสตริงส่วนขยายที่ไม่รองรับ
- ต้องรองรับส่วนขยายต่อไปนี้
EGL_EXT_image_dma_buf_importEGL_EXT_image_dma_buf_import_modifiersEGL_KHR_fence_syncEGL_KHR_image_baseEGL_KHR_wait_syncGL_OES_EGL_image
ขอแนะนำอย่างยิ่งให้การใช้งานอุปกรณ์ใช้ไลบรารี ANGLE กับแบ็กเอนด์ Vulkan เพื่อใช้งาน OpenGL ES
Vulkan
การใช้งานอุปกรณ์
- ขอแนะนำอย่างยิ่งให้รองรับ Vulkan 1.3
- ต้องไม่รองรับ Vulkan เวอร์ชันย่อย (นั่นคือ ส่วนย่อยของเวอร์ชันหลักของ Vulkan ต้องเป็น 0)
- ต้องรองรับส่วนขยายต่อไปนี้
VK_ANDROID_external_memory_android_hardware_bufferVK_EXT_external_memory_dma_bufVK_EXT_queue_family_foreignVK_KHR_external_memory_fdVK_KHR_external_semaphore_fd
ความเข้ากันได้ของมัลติมีเดีย
การใช้งานอุปกรณ์ต้องอนุญาตให้เล่นเนื้อหาเสียงดิบที่มีลักษณะต่อไปนี้
- รูปแบบต้นฉบับ: Linear PCM, 16 บิต, 8 บิต, Float
- ช่อง: โมโน, สเตอริโอ, การกำหนดค่าหลายช่องสัญญาณที่ถูกต้องซึ่งมีช่องสัญญาณสูงสุด 8 ช่อง
- อัตราการสุ่มตัวอย่าง (เป็น Hz):
- 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 ในการกำหนดค่าช่องสัญญาณที่ระบุไว้ก่อนหน้านี้
- 96000 ในโมโนและสเตอริโอ
การใช้งานอุปกรณ์ต้องอนุญาตให้บันทึกเนื้อหาเสียงดิบ การใช้งานอุปกรณ์ต้องรองรับลักษณะต่อไปนี้อย่างน้อย
- รูปแบบ: Linear PCM, 16 บิต
- อัตราการสุ่มตัวอย่าง: 8000, 11025, 16000, 44100, 48000 Hz
- ช่อง: โมโน
การใช้งานอุปกรณ์ควรอนุญาตให้บันทึกเนื้อหาเสียงดิบที่มีลักษณะต่อไปนี้
- รูปแบบ: Linear PCM, 16 บิต และ 24 บิต
- อัตราการสุ่มตัวอย่าง: 8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000 Hz
- ช่อง: ช่องสัญญาณจำนวนเท่ากับไมโครโฟนในอุปกรณ์
การใช้งานอุปกรณ์ต้องรองรับการเล่นและการบันทึกเสียง ผ่าน API
libtinyalsav2.soโดยใช้อุปกรณ์virtio-soundสำหรับ การเข้าถึงฮาร์ดแวร์ และต้องรองรับ ALSA APIตัวเข้ารหัสและตัวถอดรหัสวิดีโอต้องรองรับรูปแบบสี YUV420 8:8:8 แบบระนาบหรือแบบกึ่งระนาบอย่างน้อย 1 รูปแบบ
ตัวถอดรหัสและตัวเข้ารหัสวิดีโอต้องรองรับตัวแปลงรหัส H.264 AVC
การใช้งานอุปกรณ์ต้องรองรับ H.264 Main Profile Level 3.1 และ Baseline Profile การรองรับการเรียงลำดับสไลซ์แบบกำหนดเอง (ASO), การเรียงลำดับมาโครบล็อกแบบยืดหยุ่น (FMO) และสไลซ์ซ้ำซ้อน (RS) เป็นตัวเลือก
ตัวเข้ารหัสวิดีโอ
- ต้องรองรับโปรไฟล์การเข้ารหัสวิดีโอความละเอียดมาตรฐาน (SD) ในตารางต่อไปนี้
ควรรองรับโปรไฟล์การเข้ารหัสวิดีโอความละเอียดสูง (HD) ตามที่ระบุไว้ในตารางต่อไปนี้
SD (คุณภาพต่ำ) SD (คุณภาพสูง) HD 720p HD 1080p ความละเอียดวิดีโอ 320 x 240 พิกเซล 720 x 480 พิกเซล 1280 x 720 พิกเซล 1920 x 1080 พิกเซล อัตราเฟรมวิดีโอ 20 fps 30 fps 30 fps 30 fps อัตราบิตของวิดีโอ 384 Kbps 2 Mbps 4 Mbps 10 Mbps
ตัวถอดรหัสวิดีโอ
- ต้องรองรับโปรไฟล์การถอดรหัสวิดีโอ HD 720p ในตารางต่อไปนี้
ต้องรองรับโปรไฟล์การถอดรหัสวิดีโอ HD 1080p ในตารางต่อไปนี้
SD (คุณภาพต่ำ) SD (คุณภาพสูง) HD 720p HD 1080p ความละเอียดวิดีโอ 320 x 240 พิกเซล 720 x 480 พิกเซล 1280 x 720 พิกเซล 1920 x 1080 พิกเซล อัตราเฟรมวิดีโอ 30 fps 30 fps 60 fps 30 fps อัตราบิตของวิดีโอ 800 Kbps 2 Mbps 8 Mbps 20 Mbps
การใช้งานอุปกรณ์ต้องรองรับตัวแปลงรหัสสื่อโดยใช้ Video4Linux API
การใช้งานอุปกรณ์ต้องให้สิทธิ์เข้าถึงตัวถอดรหัสวิดีโอฮาร์ดแวร์โดยใช้ Video4Linux API
ตัวเข้ารหัสวิดีโอและรูปภาพที่เร่งการแสดงผลด้วยฮาร์ดแวร์ทั้งหมดต้องรองรับการเข้ารหัสเฟรมจากกล้องฮาร์ดแวร์ การใช้งานอุปกรณ์ต้องให้สิทธิ์เข้าถึงฮาร์ดแวร์สำหรับการเข้ารหัสและถอดรหัสวิดีโอผ่าน
virtio-mediaการใช้งานอุปกรณ์ต้องให้สิทธิ์เข้าถึงกล้องวิดีโอโดยใช้ Video4Linux API
ระบบโฮสต์ (ไฮเปอร์ไวเซอร์และฮาร์ดแวร์)
ข้อกำหนดในส่วนนี้ใช้กับระบบโฮสต์และสภาพแวดล้อมไฮเปอร์ไวเซอร์
ระบบเสมือนจริง
- นอกเหนือจากอุปกรณ์
virtioที่โปรไฟล์หลักกำหนดแล้ว ระบบโฮสต์ต้องมีสิ่งต่อไปนี้virtio-gpu: สำหรับ GPU และจอแสดงผลเสมือนvirtio-input: สำหรับการส่งต่อเหตุการณ์อินพุต (เช่น การสัมผัส แป้นพิมพ์)virtio-sound: สำหรับอุปกรณ์เสียงเสมือนvirtio-videoหรือvirtio-media: สำหรับอุปกรณ์ตัวแปลงรหัสวิดีโอเสมือน
อินพุต
- อุปกรณ์ต้องรองรับอุปกรณ์อินพุตและส่งต่อเหตุการณ์ไปยังระบบ Guest โดยใช้
virtio-inputอุปกรณ์ควรรองรับอินพุตของตัวชี้ ปุ่ม และตัวควบคุมแบบหมุน