เสียงความละเอียดสูง

การเปิดตัว 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
    • ยืนยันรหัสเดิม อย่าคิดว่าใช้งานได้