Quản lý tài nguyên âm thanh trong quá trình tạm ngưng

Để đảm bảo tính ổn định của hệ thống và khả năng chuyển sang các trạng thái tiêu thụ ít điện năng như Tạm ngưng sang RAM (S2R) hoặc Tạm ngưng sang ổ đĩa (S2D), bạn cần phải quản lý đúng cách các tài nguyên âm thanh trong quá trình chuyển đổi nguồn.

Ứng dụng có thể không phải lúc nào cũng giải phóng luồng đầu vào hoặc đầu ra âm thanh khi hệ thống bắt đầu tạm ngưng. Các luồng âm thanh đang hoạt động có thể ngăn hệ thống con âm thanh và phần cứng cơ bản chuyển sang trạng thái rảnh, điều này có thể chặn hệ thống trên chip (SoC) chuyển sang chế độ ngủ sâu. Điều này dẫn đến việc tạm ngưng không thành công và tăng mức tiêu thụ điện năng.

Các nhà sản xuất thiết bị gốc (OEM) phải triển khai một cơ chế dự phòng mạnh mẽ trong quá trình triển khai Lớp trừu tượng phần cứng âm thanh (HAL) để xử lý các luồng âm thanh đang hoạt động trong quá trình chuyển đổi tạm ngưng. Điều này là cần thiết để đảm bảo tính ổn định của nền tảng, bất kể hành vi của ứng dụng.

Ứng dụng phải quản lý đúng cách các tài nguyên âm thanh, nhưng hệ thống không thể dựa vào điều này để chuyển đổi trạng thái nguồn cơ bản. HAL âm thanh là lớp thích hợp để thực thi việc ngừng kích hoạt tài nguyên nhằm đảm bảo khả năng chuyển sang trạng thái tạm ngưng của hệ thống. Bạn nên sử dụng phương pháp này để quản lý nguồn điện mạnh mẽ.

Triển khai tính năng quản lý nguồn

Để triển khai tính năng quản lý nguồn mạnh mẽ trong HAL âm thanh, hãy làm theo các bước sau:

  1. Phát hiện các thay đổi về trạng thái nguồn của hệ thống, đặc biệt là quá trình chuyển đổi sang trạng thái tạm ngưng.

  2. Khi hệ thống đang chuẩn bị tạm ngưng, hãy can thiệp nếu có bất kỳ luồng âm thanh nào (cả đầu vào và đầu ra) vẫn đang hoạt động:

    • Giải phóng luồng đầu ra phần cứng và loại bỏ dữ liệu đến từ khung âm thanh.
    • Giải phóng luồng đầu vào phần cứng và gửi âm thanh im lặng đến khung.

    Hành động ở cấp HAL này đảm bảo rằng phần cứng âm thanh có thể chuyển sang trạng thái rảnh, cho phép hệ thống tạm ngưng thành công, ngay cả khi một ứng dụng chưa giải phóng tài nguyên âm thanh của mình.

  3. Khi hệ thống tiếp tục hoạt động sau khi tạm ngưng, hãy khôi phục hệ thống con âm thanh về trạng thái hoạt động. Điều này bao gồm việc bỏ tắt tiếng mọi luồng đầu ra đã tắt tiếng trước đó và kích hoạt lại luồng đầu vào, cho phép ứng dụng tiếp tục phát và ghi âm.

Tác động đến ứng dụng

Việc quản lý tài nguyên âm thanh ở cấp HAL trong quá trình tạm ngưng sẽ tác động đến ứng dụng theo những cách sau:

  • Tạm ngưng trong suốt: Đối với các ứng dụng sử dụng micrô, quá trình tạm ngưng hệ thống (chuyển sang S2D hoặc S2R) là trong suốt.
  • Tắt tiếng âm thanh trong quá trình chuyển đổi: Sau khi quá trình chuyển đổi tạm ngưng được bắt đầu, các luồng đang hoạt động sẽ bị tắt tiếng tại HAL. Ứng dụng tiếp tục chạy, nhưng chỉ nhận được âm thanh bị tắt tiếng trong quá trình tạm ngưng.
  • Tự động tiếp tục: Khi hệ thống tiếp tục hoạt động, ứng dụng sẽ tự động bắt đầu nhận hoặc gửi lại dữ liệu âm thanh thực mà không cần thực hiện bất kỳ hành động nào để thu thập lại hoặc khôi phục tài nguyên.