เวอร์ชัน Android 10 มีการปรับปรุงต่อไปนี้สำหรับเสียงความละเอียดสูง
- Float: อัปเดตตัวแปลงรหัสและโปรแกรมแยกไฟล์ WAV, FLAC เพื่อรองรับ Float (ความแม่นยำแบบไม่สูญเสียรายละเอียด 24 บิตขึ้นไป) เอฟเฟกต์การลดขนาดเสียงและ Virtualizer ได้รับการอัปเดตเป็นลอย MediaPlayer (NuPlayer) อนุญาตให้ใช้ความแม่นยำที่อัปเดตแล้ว
- ความถี่สูง: ตัวแปลงรหัสและโปรแกรมแยก WAV, FLAC ได้รับการอัปเดตให้รองรับ 192 kHz เอฟเฟกต์เริ่มต้นที่ Android มีให้ได้รับการทดสอบเพื่อรองรับ 192 kHz ที่ความถี่มาตรฐาน ความถี่มาตรฐานที่อนุญาตคือ 88.2 kHz, 96 kHz, 176.4 kHz และ 192 kHz
- หลายช่อง: ระบบจะทดสอบเอฟเฟกต์การเล่นเริ่มต้นของ Android เพื่อรองรับเสียงหลายช่องได้สูงสุด 8 ช่อง
- เวลา: ข้อมูลเวลาจะรวมอยู่ในเฟรมเวิร์กเสียง
ตั้งแต่ Android 9 เป็นต้นไป การปรับปรุงต่อไปนี้จะไม่ต้องติดตั้งใช้งานพาร์ทเนอร์
- จำนวนแทร็กเอาต์พุตไคลเอ็นต์พร้อมกันเพิ่มขึ้นจาก 14 เป็น 40 เนื่องจากอินสแตนซ์ไคลเอ็นต์ของ
AudioTrack
แบบจำกัดเป็นปัญหาสำหรับแอปใน Android 8.x - หน่วยความจำสูงสุดของไคลเอ็นต์/เซิร์ฟเวอร์เพิ่มขึ้นจาก 4 MB เป็น 32 MB (ขึ้นอยู่กับหน่วยความจำทั้งหมดของอุปกรณ์) เพื่อให้เล่นแทร็กเสียงความละเอียดสูงพร้อมกันได้มากขึ้น
- แทร็กผสมทั้งหมดเพิ่มขึ้นจาก 32 เป็น 256 แทร็กเพื่อป้องกันการแย่งทรัพยากรระหว่างแอปกับ UI ของระบบ
การเปลี่ยนแปลงเอฟเฟกต์เอาต์พุต
ดูเอฟเฟกต์เสียงสำหรับการเปลี่ยนแปลงในรุ่น Android 11
ก่อนการเปิดตัว Android 9 ได้มีการใช้การประมวลผลเชนเอฟเฟกต์ในรูปแบบตัวอย่าง int16 แบบสเตอริโอ ซึ่งมีข้อจํากัดหลายประการ ดังนี้
- เอฟเฟกต์เอาต์พุตทั้งหมดจะบังคับให้แปลงข้อมูลจากเสียงที่เป็นทศนิยมไปเป็นแบบ int16 ซึ่งทำให้ความแม่นยำลดลง
- ระบบปฏิเสธเอฟเฟกต์เอาต์พุตจากซิงค์เอาต์พุตที่มีจํานวนช่องมากกว่า 2
ในรุ่น Android 9 จะมีการอัปเกรดไปป์ไลน์การประมวลผลเชนเอฟเฟกต์เพื่อรองรับรูปแบบหลายช่องที่เป็นเลขทศนิยม ประเด็นสำคัญ
- ระบบได้ย้ายข้อมูลเอฟเฟกต์ซอฟต์แวร์ของ Android ไปยังสเตอริโอแบบลอยตัวแล้ว
- เอฟเฟกต์เดิมจะใช้ได้กับอะแดปเตอร์รูปแบบ ซึ่งจะแปลง float เป็น int16 ตามที่จำเป็น
ใช้เอฟเฟกต์เอาต์พุต
การใช้งานอ้างอิงสำหรับเอฟเฟกต์เอาต์พุตมีอยู่ใน
frameworks/av/media/libeffects
พาร์ทเนอร์ที่ใช้เอฟเฟกต์เอาต์พุตที่กำหนดเองของตนเองควรทำดังนี้สำหรับรุ่น Android 10
- อัปเดตเอฟเฟกต์เอาต์พุตเพื่อรองรับรูปแบบ Float แบบหลายช่อง โดยทำดังนี้
- คุณไม่จําเป็นต้องรองรับการประมวลผล Int16 อีกต่อไป
- รองรับจำนวนช่องเอาต์พุต 2-8 (สำหรับความสามารถในการใช้งานร่วมกันในอนาคต ให้พิจารณาจำนวน 1-30)
- รองรับจำนวนช่องอินพุตที่ตรงกับจำนวนช่องเอาต์พุตสำหรับเอฟเฟกต์แทรก เสียงเอฟเฟกต์เสริมจะยังคงเห็นจำนวนช่องอินพุต 1 (โมโน)
- รองรับทั้งมาสก์ตำแหน่งแชแนล (Canonical) และมาสก์ดัชนีแชแนลของ
(1 << n) - 1
- หากต้องรองรับเอฟเฟกต์เอาต์พุตของผู้ให้บริการเดิมต่อไปและอัปเดตไม่ได้ ให้ยืนยันโค้ดเดิมดังนี้
- เอฟเฟกต์เอาต์พุต (แทรก) แบบเดิมต้องปฏิเสธการกำหนดค่าที่ไม่รองรับใน
EFFECT_CMD_SET_CONFIG
- ตรวจสอบว่ารูปแบบเป็น int16
- ตรวจสอบว่าหน้ากากช่องอินพุตและเอาต์พุตเป็นแบบสเตอริโอ
- หากการตรวจสอบไม่สําเร็จ ให้แสดงผล
-EINVAL
- เอฟเฟกต์เอาต์พุต (เสริม) แบบเดิมได้รับการกำหนดค่าโดย AudioFlinger ด้วยมาสก์ช่องอินพุตโมโนและมาสก์ช่องเอาต์พุตที่อาจเป็นแบบหลายช่อง ทั้งนี้ขึ้นอยู่กับว่าตัวรับสัญญาณเอาต์พุตเป็นแบบหลายช่องหรือไม่
ผู้ขายต้องปฏิเสธการกำหนดค่าที่ไม่รองรับใน
EFFECT_CMD_SET_CONFIG
- ตรวจสอบว่ารูปแบบเป็น int16
- ตรวจสอบว่าหน้ากากช่องอินพุตเป็นแบบโมโนและหน้ากากช่องเอาต์พุตเป็นแบบสเตอริโอ
- หากการตรวจสอบไม่สําเร็จ ให้แสดงผล
-EINVAL
- ยืนยันโค้ดเดิม อย่าเพิ่งคิดว่าวิธีนี้ใช้ได้
- เอฟเฟกต์เอาต์พุต (แทรก) แบบเดิมต้องปฏิเสธการกำหนดค่าที่ไม่รองรับใน