การเปิดตัว Android 10 มีการปรับปรุงต่อไปนี้ สำหรับเสียงความละเอียดสูง
- Float: มีการอัปเดตตัวแปลงรหัสและตัวแยก WAV, FLAC เพื่อรองรับ Float (ความแม่นยำแบบไม่สูญเสียรายละเอียด 24 บิตขึ้นไป) อัปเดตเอฟเฟกต์การมิกซ์ดาวน์และ Virtualizer เป็น Float 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 ไปยังสเตอริโอโฟลตแล้ว
- เอฟเฟกต์เดิมจะรองรับอะแดปเตอร์รูปแบบ ซึ่งจะแปลงโฟลต เป็น int16 ตามความจำเป็น
ใช้เอฟเฟกต์เอาต์พุต
การติดตั้งใช้งานอ้างอิงสำหรับเอฟเฟกต์เอาต์พุตมีให้ใช้งานที่
frameworks/av/media/libeffects
พาร์ทเนอร์ที่ใช้เอฟเฟกต์เอาต์พุตที่กำหนดเองของตนเองควรทำสิ่งต่อไปนี้สำหรับการเปิดตัว Android 10
- อัปเดตเอฟเฟกต์เอาต์พุตให้รองรับรูปแบบโฟลตแบบหลายช่อง ดังนี้
- ไม่จำเป็นต้องรองรับการประมวลผล Int16 อีกต่อไป
- รองรับจำนวนช่องเอาต์พุตตั้งแต่ 2-8 ช่อง (เพื่อความเข้ากันได้ในอนาคต ให้พิจารณาจำนวนตั้งแต่ 1-30 ช่อง)
- รองรับจำนวนช่องอินพุตที่ตรงกับจำนวนช่องเอาต์พุตสำหรับ เอฟเฟกต์การแทรก Auxiliary effects continue to see an input channel count of 1 (mono).
- รองรับทั้งมาสก์ตำแหน่งช่อง (Canonical) และมาสก์ดัชนีช่อง
ของ
(1 << n) - 1
- หากคุณต้องรองรับเอฟเฟกต์เอาต์พุตของผู้ให้บริการเดิมต่อไปและอัปเดตไม่ได้
ให้ยืนยันโค้ดเดิมดังนี้
- เอฟเฟกต์เอาต์พุต (แทรก) เดิมต้องปฏิเสธ
การกำหนดค่าที่ไม่รองรับใน
EFFECT_CMD_SET_CONFIG
- ตรวจสอบว่ารูปแบบเป็น int16
- ตรวจสอบว่ามาสก์ช่องอินพุตและเอาต์พุตเป็นสเตอริโอ
- หากการตรวจสอบใดไม่สำเร็จ ให้แสดงผล
-EINVAL
- AudioFlinger จะกำหนดค่าเอฟเฟกต์เอาต์พุต (เสริม) รุ่นเดิม
โดยใช้มาสก์ช่องอินพุตแบบโมโนและมาสก์ช่องเอาต์พุตแบบหลายช่อง
ทั้งนี้ขึ้นอยู่กับว่า Sink เอาต์พุตเป็นแบบหลายช่องหรือไม่
โดยต้องปฏิเสธการกำหนดค่าที่ไม่รองรับใน
EFFECT_CMD_SET_CONFIG
- ตรวจสอบว่ารูปแบบเป็น int16
- ตรวจสอบว่ามาสก์ช่องอินพุตเป็นโมโนและมาสก์ช่องเอาต์พุตเป็นสเตอริโอ
- หากการตรวจสอบใดไม่สำเร็จ ให้แสดงผล
-EINVAL
- ยืนยันรหัสเดิม อย่าคิดว่าใช้งานได้
- เอฟเฟกต์เอาต์พุต (แทรก) เดิมต้องปฏิเสธ
การกำหนดค่าที่ไม่รองรับใน