การเปิดตัว Android 10 มีการปรับปรุงต่อไปนี้เพื่อให้เสียงความละเอียดสูง
- Float: ตัวแปลงรหัส WAV, FLAC และเครื่องมือแยกข้อมูลได้รับการอัปเดตเพื่อรองรับการลอยตัว (ทศนิยม 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
- ยืนยันโค้ดเดิม อย่าเพิ่งคิดว่าวิธีนี้ใช้ได้
- เอฟเฟกต์เอาต์พุต (แทรก) แบบเดิมต้องปฏิเสธการกำหนดค่าที่ไม่รองรับใน