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