Làm nóng âm thanh

Làm ấm âm thanh là thời gian cần thiết để mạch khuếch đại âm thanh trong thiết bị của bạn được cấp nguồn đầy đủ và đạt trạng thái hoạt động bình thường. Các yếu tố chính góp phần vào thời gian khởi động âm thanh là tính năng quản lý nguồn và mọi logic "loại bỏ tiếng ồn" để ổn định mạch.

Tài liệu này mô tả cách đo lường thời gian khởi động âm thanh và các cách có thể giảm thời gian khởi động.

Đo lường thời gian khởi động đầu ra

Luồng FastMixer của AudioFlinger tự động đo lường quá trình khởi động đầu ra và báo cáo quá trình này như một phần của đầu ra của lệnh dumpsys media.audio_flinger. Khi khởi động, FastMixer gọi write() nhiều lần cho đến khi thời gian giữa hai write() là lượng dự kiến. FastMixer xác định quá trình khởi động âm thanh bằng cách xem thời gian cần thiết để write() Lớp trừu tượng phần cứng (HAL) ổn định.

Để đo lường quá trình khởi động âm thanh, hãy làm theo các bước sau cho loa tích hợp và tai nghe có dây cũng như tại nhiều thời điểm sau khi khởi động. Thời gian khởi động thường khác nhau đối với từng thiết bị đầu ra và ngay sau khi khởi động thiết bị:

  1. Đảm bảo bạn đã bật FastMixer.
  2. Bật âm thanh chạm bằng cách chọn Cài đặt > Âm thanh > Âm thanh chạm trên thiết bị.
  3. Đảm bảo rằng âm thanh đã tắt ít nhất 3 giây. Bạn nên chọn thời gian từ 5 giây trở lên vì chính phần cứng có thể có logic nguồn riêng ngoài 3 giây mà AudioFlinger có.
  4. Nhấn vào nút Màn hình chính và bạn sẽ nghe thấy tiếng nhấp.
  5. Chạy lệnh sau để nhận thời gian khởi động được đo lường:
    adb shell dumpsys media.audio_flinger | grep measuredWarmup
    

    Bạn sẽ thấy kết quả như sau:

    sampleRate=44100 frameCount=256 measuredWarmup=X ms, warmupCycles=X
    

    measuredWarmup=X là số mili giây X cần thiết để hoàn tất nhóm write() HAL đầu tiên.

    warmupCycles=X là số lượng yêu cầu ghi HAL cần thiết cho đến khi thời gian thực thi của write() khớp với dự kiến.

  6. Đo 5 lần và ghi lại tất cả các lần đo cũng như giá trị trung bình. Nếu không phải tất cả các giá trị đều gần như giống nhau, thì có thể một giá trị đo lường không chính xác. Ví dụ: nếu không đợi đủ lâu sau khi tắt âm thanh, bạn sẽ thấy thời gian khởi động thấp hơn giá trị trung bình.

Đo lường thời gian khởi động đầu vào

Hiện không có công cụ nào được cung cấp để đo lường thời gian khởi động đầu vào âm thanh. Tuy nhiên, bạn có thể ước tính thời gian khởi động đầu vào bằng cách quan sát thời gian cần thiết để startRecording() trả về.

Giảm thời gian khởi động

Bạn thường có thể giảm thời gian khởi động bằng cách kết hợp:

  • Thiết kế mạch tốt
  • Độ trễ thời gian chính xác trong trình điều khiển thiết bị hạt nhân
  • Thực hiện các thao tác khởi động độc lập đồng thời thay vì tuần tự
  • Để mạch ở trạng thái bật nguồn hoặc không định cấu hình lại đồng hồ (tăng mức tiêu thụ điện năng ở trạng thái rảnh)
  • Lưu các tham số đã tính toán vào bộ nhớ đệm

Tuy nhiên, hãy cẩn thận với việc tối ưu hoá quá mức. Bạn có thể thấy rằng mình cần phải đánh đổi giữa thời gian khởi động thấp so với việc không có hiện tượng nhấp nháy khi chuyển đổi nguồn.