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 lệnh "bỏ bậ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 tác vụ đó trong kết quả của lệnh dumpsys media.audio_flinger
.
Khi khởi động, FastMixer gọi write()
lặp lại cho đến khi khoảng thời gian giữa hai write()
là thời 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. Năm giây trở lên sẽ tốt hơn vì phần cứng có thể có logic nguồn riêng ngoài 3 giây như 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 tất cả các kết quả không gần giống nhau, thì có thể phép đo 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 chưa có công cụ nào được cung cấp để đo 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 đồng thời các hoạt động khởi động độc lập 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 cần phải cân bằng giữa thời gian khởi động thấp và thiếu tiếng nổ khi chuyển đổi nguồn.