จัดการแหล่งข้อมูลเสียงระหว่างการระงับ

เพื่อให้มั่นใจว่าระบบจะมีความเสถียรและสามารถเข้าสู่สถานะพลังงานต่ำ เช่น Suspend-to-RAM (S2R) หรือ Suspend-to-Disk (S2D) การจัดการทรัพยากรเสียงอย่างเหมาะสมในระหว่างการเปลี่ยนพลังงานจึงเป็นสิ่งสำคัญ

แอปอาจไม่ปล่อยสตรีมอินพุตหรือเอาต์พุตเสียงเสมอไปเมื่อระบบเริ่มระงับ สตรีมเสียงที่ใช้งานอยู่อาจป้องกันไม่ให้ ระบบย่อยเสียงและฮาร์ดแวร์พื้นฐานเข้าสู่โหมดว่าง ซึ่งอาจบล็อก ระบบวงจรรวมบนชิป (SoC) ไม่ให้เข้าสู่โหมดสลีปลึก ซึ่งส่งผลให้การพยายามระงับล้มเหลว และมีการใช้พลังงานเพิ่มขึ้น

OEM ต้องใช้กลไกการสำรองที่แข็งแกร่งภายในเลเยอร์การแยกฮาร์ดแวร์เสียง (HAL) เพื่อจัดการสตรีมเสียงที่ใช้งานอยู่ระหว่าง การเปลี่ยนสถานะเป็นระงับ ซึ่งเป็นสิ่งจำเป็นสำหรับความเสถียรของแพลตฟอร์ม ไม่ว่าแอปจะมีลักษณะการทำงานอย่างไร

แอปควรจัดการทรัพยากรเสียงอย่างถูกต้อง แต่ระบบ ไม่สามารถใช้การจัดการนี้สำหรับการเปลี่ยนสถานะพลังงานพื้นฐานได้ HAL เสียงเป็น เลเยอร์ที่เหมาะสมในการบังคับใช้การปิดใช้งานทรัพยากรเพื่อให้มั่นใจว่า ระบบจะเข้าสู่สถานะระงับได้ เราขอแนะนำให้ใช้วิธีนี้เพื่อ การจัดการพลังงานที่มีประสิทธิภาพ

ใช้การจัดการพลังงาน

หากต้องการใช้การจัดการพลังงานที่มีประสิทธิภาพใน Audio HAL ให้ทำตามขั้นตอนต่อไปนี้

  1. ตรวจหาการเปลี่ยนแปลงสถานะการเปิด/ปิดระบบ โดยเฉพาะการเปลี่ยนไปใช้โหมดพัก

  2. เมื่อระบบกำลังเตรียมหยุดทำงาน ให้แทรกแซงหากสตรีมเสียง (ทั้งอินพุตและเอาต์พุต) ยังคงทำงานอยู่

    • ปล่อยสตรีมเอาต์พุตของฮาร์ดแวร์และทิ้งข้อมูลขาเข้าจากเฟรมเวิร์กเสียง
    • ปล่อยสตรีมอินพุตของฮาร์ดแวร์และส่งเสียงเงียบไปยังเฟรมเวิร์ก

    การดำเนินการระดับ HAL นี้ช่วยให้ฮาร์ดแวร์เสียงสามารถเข้าสู่สถานะไม่มีการใช้งานได้ ทำให้ระบบระงับการทำงานได้สำเร็จ แม้ว่าแอปจะยังไม่ได้ปล่อยทรัพยากรเสียงก็ตาม

  3. เมื่อระบบกลับมาทำงานต่อจากการหยุดทำงาน ให้คืนค่าระบบย่อยเสียงเป็น สถานะที่ใช้งานอยู่ ซึ่งรวมถึงการยกเลิกการปิดเสียงสตรีมเอาต์พุตที่ปิดเสียงไว้ก่อนหน้านี้ และการเปิดใช้งานสตรีมอินพุตอีกครั้ง เพื่อให้แอปเล่นเสียงและ บันทึกเสียงต่อไปได้

ผลกระทบต่อแอป

การจัดการทรัพยากรเสียงที่ระดับ HAL ระหว่างการระงับจะส่งผลต่อแอปในลักษณะต่อไปนี้

  • การระงับที่โปร่งใส: สำหรับแอปที่ใช้ไมโครโฟน ระบบจะระงับ (เข้าสู่ S2D หรือ S2R) อย่างโปร่งใส
  • ปิดเสียงระหว่างการเปลี่ยนสถานะ: หลังจากเริ่มการเปลี่ยนสถานะเป็นถูกระงับ ระบบจะปิดเสียงสตรีมที่ใช้งานอยู่ที่ HAL แอปจะยังทำงานต่อไป แต่จะ รับเฉพาะเสียงที่ปิดอยู่ระหว่างการระงับ
  • เล่นต่อโดยอัตโนมัติ: เมื่อระบบกลับมาทำงานอีกครั้ง แอปจะเริ่มรับหรือส่งข้อมูลเสียงแบบเรียลไทม์อีกครั้งโดยอัตโนมัติโดยไม่ต้องดำเนินการใดๆ เพื่อขอรับหรือกู้คืนทรัพยากร