Khởi động â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. Nhà đóng góp chính cho đến khi khởi động âm thanh là quản lý nguồn điện và mọi "tắt" logic để ổn định mạch.
Tài liệu này mô tả cách đo thời gian khởi động âm thanh và những cách có thể để giảm thời gian khởi động.
Đo lường quá trình 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 thao tác đó trong kết quả 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 khởi động âm thanh bằng cách xem thời lượng Hardware Abstraction
Lớp (HAL) write()
sử dụng để ổn định.
Để đo quá trình khởi động âm thanh, hãy làm theo các bước sau đối với loa tích hợp và tai nghe có dây và vào các thời điểm khác nhau 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ị:
- Đảm bảo bạn đã bật FastMixer.
- 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ị.
- Đảm bảo rằng âm thanh đã được tắt trong í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ó.
- Hãy nhấn vào nút Màn hình chính và bạn sẽ nghe thấy tiếng tách.
- Chạy lệnh sau để nhận thông tin 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ố X mili giây phải mất loạt HALwrite()
đầu tiên để hoàn thành.warmupCycles=X
là số yêu cầu ghi HAL (Lớp trừu tượng phần cứng) cần thiết cho đến khi thời gian thực thi củawrite()
khớp với thời gian dự kiến. - Thực hiện năm lần đo và ghi lại tất cả, 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 bạn 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 quá trình 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, thời gian khởi động đầu vào có thể được ước tính bằng cách quan sát thời gian cần thiết để startRecord() quay lại.
Giảm thời gian khởi động
Thông thường, bạn có thể giảm thời gian khởi động bằng cách kết hợp các cách sau:
- Thiết kế mạch tốt
- Độ trễ chính xác trong thời gian của trình điều khiển thiết bị nhân hệ điều hành
- 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 luôn bật hoặc không định cấu hình lại xung nhịp (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ảnh giác 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.