การรองรับนโยบายเสียงที่กำหนดค่าได้ใน AIDL HAL

ตั้งแต่ Android 16 เป็นต้นไป อินเทอร์เฟซ AIDL Audio HAL จะรองรับนโยบายเสียงที่กำหนดค่าได้ (CAP) อย่างเต็มรูปแบบ

หน้านี้ให้ข้อมูลทางเทคนิคที่จำเป็นเพื่อช่วยเหลือพาร์ทเนอร์และผู้ให้บริการ SoC ในการย้ายข้อมูลการกำหนดค่านโยบายเสียง

เฟรมเวิร์กพารามิเตอร์

การติดตั้งใช้งาน CAP จะอิงตาม Intel Parameter Framework CAP เปิดตัวใน Android 6 เฟรมเวิร์กพารามิเตอร์ (PfW) ช่วยให้คุณอธิบายระบบในแง่ของพารามิเตอร์ได้ เมื่อใช้ไฟล์ XML สำหรับการกําหนดค่า PfW จะเชื่อมโยงพารามิเตอร์กับการดำเนินการโดยใช้ปลั๊กอิน และให้กฎสําหรับการเปลี่ยนแปลงพารามิเตอร์ตามเกณฑ์ปัจจุบัน

โครงสร้างของ CAP ใน HIDL

ใน HIDL การกําหนดค่าทั้งหมดสําหรับ CAP จะระบุไว้ใน XML ดูข้อมูลเพิ่มเติมได้ที่เฟรมเวิร์กพารามิเตอร์และการกําหนดค่าโดยใช้เฟรมเวิร์กพารามิเตอร์ ไฟล์ XML ใช้เพื่อระบุข้อมูลต่อไปนี้

  • คําอธิบายโครงสร้างของพารามิเตอร์ (นั่นคือ คําอธิบายของโดเมนเสียงสําหรับ PfW)
  • คําจํากัดความของเกณฑ์
  • กฎสําหรับกลยุทธ์การกำหนดเส้นทาง (การเลือกอุปกรณ์อินพุตและเอาต์พุต)
  • ข้อกำหนดของตารางวอลุ่ม

เมื่อใช้ HIDL เฟรมเวิร์ก Android จะโหลดไฟล์ XML เหล่านี้ได้โดยตรงจากพาร์ติชันของผู้ให้บริการ ระบบอนุญาตเนื่องจากมีการกําหนดสคีมา XSD ไว้สําหรับไฟล์ XML เหล่านี้ ซึ่งเป็นส่วนหนึ่งของ HAL API HIDL HAL เวอร์ชันหลักแต่ละเวอร์ชันมีสคีมา XSD ที่สอดคล้องกัน เวอร์ชันหลักไม่จำเป็นต้องมีความเข้ากันได้แบบย้อนหลัง

โครงสร้างของ CAP ใน AIDL

เมื่อเปลี่ยนไปใช้ AIDL เวอร์ชันของ HAL API จะต้องยังคงใช้งานร่วมกับเวอร์ชันเก่าได้ (ในคำศัพท์ HIDL เวอร์ชันของ AIDL HAL แต่ละเวอร์ชันเป็นการอัปเดต "รอง") คุณไม่สามารถใช้สคีมา XSD เป็นส่วนหนึ่งของ HAL API ได้อีกต่อไป เนื่องจากไม่มีวิธีกำหนดการอัปเดตสคีมาที่เข้ากันได้แบบย้อนหลัง ดังนั้น HAL จะต้องระบุการกําหนดค่าที่ก่อนหน้านี้ระบุไว้ในไฟล์ XML โดยใช้ AIDL API โครงสร้างของการกำหนดค่า CAP จึงได้รับการแปลงเป็น AIDL ซึ่งคล้ายกับ XML การกำหนดค่านโยบายเสียงใน AIDL Audio HAL สำหรับ Android 15

ระบบจะเพิ่มโครงสร้างข้อมูลของ CAP ลงในประเภทข้อมูลทั่วไปที่เสถียร และรวมองค์ประกอบต่อไปนี้

จุดแรกเข้าสําหรับการกําหนดค่า CAP อยู่ในโครงสร้าง AudioHalEngineConfig.CapSpecificConfig ดูความคิดเห็นใน AudioHalCapConfiguration.aidl เพื่อดูแผนภาพโครงสร้างข้อมูล CAP

การใช้งานเริ่มต้นของ AIDL HAL มีคลาสตัวช่วยที่กรอกข้อมูลใน Parcelable ของ AIDL ตามเนื้อหาของไฟล์ XML CAP รุ่นเดิมเพื่อลดความซับซ้อนในการย้ายข้อมูลสำหรับพาร์ทเนอร์

สถานการณ์การย้ายข้อมูล

พาร์ทเนอร์อาจพิจารณาตัวเลือกตามที่ระบุไว้ในส่วนนี้ โดยขึ้นอยู่กับว่าเป็นการเปิดตัวผลิตภัณฑ์ครั้งแรกที่ไม่ได้ใช้ CAP มาก่อน หรือการย้ายข้อมูลผลิตภัณฑ์ที่มีอยู่

ผลิตภัณฑ์ใหม่

สำหรับผลิตภัณฑ์ใหม่ซึ่งเริ่มใช้ CAP เพื่อใช้งานนโยบายเสียง OEM สามารถเลือกที่จะใช้ XML เพื่อจัดเก็บการกำหนดค่า CAP ฝั่งผู้ให้บริการได้

ประโยชน์ของการใช้ XML คือมีชุดเครื่องมือสคริปต์ที่อำนวยความสะดวกในการสร้างการกำหนดค่าจากคำอธิบายระดับสูง

หาก OEM ตัดสินใจที่จะใช้ XML สำหรับจัดเก็บการกำหนดค่า CAP ในพาร์ติชันของผู้ให้บริการ เราขอแนะนำให้ใช้การใช้งานเริ่มต้นของโปรแกรมแยกวิเคราะห์ XML เพื่อแปลงการกำหนดค่าเป็น AIDL

การอัปเดตสำหรับผลิตภัณฑ์ที่มีอยู่

หากผลิตภัณฑ์ใช้ CAP อยู่แล้วและมีการกำหนดค่า XML คุณจะใช้ CAP ที่มีอยู่กับ HAL เวอร์ชัน AIDL ได้ต่อไป

รูปแบบการตั้งชื่อกลยุทธ์ผลิตภัณฑ์จะแตกต่างกันในการกำหนดค่า CAP เวอร์ชัน HIDL และ AIDL ใน HIDL กลยุทธ์ในตัว ("เดิม") ใช้ชื่อสั้นๆ แบบตัวพิมพ์เล็ก เช่น media ส่วนใน AIDL กลยุทธ์ในตัวจะใช้ชื่อแบบตัวพิมพ์ใหญ่ทั้งหมดที่มี STRATEGY_ นำหน้า เช่น STRATEGY_MEDIA ดูรายการกลยุทธ์ที่มีให้ใน CapProductStrategies.xml ไฟล์เดียวกันจะกําหนดรหัส "ที่จัดสรรไว้ล่วงหน้า" สําหรับกลยุทธ์เฉพาะ OEM ซึ่งเป็นไปตามรูปแบบการตั้งชื่อ vx_10xx ที่มีตัวเลขตั้งแต่ 1000 ถึง 1039

ผลิตภัณฑ์เดิม

หากผลิตภัณฑ์ที่ใช้ CAP ไม่อัปเดตพาร์ติชันของผู้ให้บริการและยังคงใช้ HIDL อยู่ คุณจะอัปเดตพาร์ติชันระบบเป็น Android 16 ได้ เฟรมเวิร์กจะยังคงเข้ากันได้กับการกำหนดค่า CAP รุ่นเดิม

ตัวอย่างการใช้งาน

AOSP มีตัวอย่างอุปกรณ์เสมือน Cuttlefish เวอร์ชัน "ยานยนต์" ซึ่งใช้ CAP กับ AIDL HAL เพื่อช่วยพาร์ทเนอร์ในการใช้ CAP สำหรับแพลตฟอร์มของตน การกําหนดค่าเฉพาะอุปกรณ์อยู่ใน device/google/cuttlefish/shared/auto/audio/policy/engine โดยมีชื่อเป้าหมาย lunch ของ aosp_cf_x86_64_auto คุณสามารถใช้ไฟล์ Android.bp เป็นข้อมูลอ้างอิงในการสร้างไฟล์ผู้ให้บริการ CAP ชุดสมบูรณ์