Khởi động âm thanh

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. Nguyên nhân chính gây ra thời gian khởi động âm thanh là quản lý nguồn và mọi logic "khử bật" để ổn định mạch.

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

Đo nhiệt độ đầu ra

Chuỗi FastMixer của AudioFlinger tự động đo mức khởi động đầu ra và báo cáo nó như một phần đầu ra của lệnh dumpsys media.audio_flinger . Khi khởi động, FastMixer gọi write() liên tục cho đến khi khoảng thời gian giữa hai write() là số 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 write() của Lớp trừu tượng phần cứng (HAL) để ổn định.

Để đo mức độ ấm lên của â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 cũng như 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ị:

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

    Bạn sẽ thấy đầu ra như thế này:

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

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

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

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

Đo nhiệt độ đầu vào

Hiện tại không có công cụ nào được cung cấp để đo mức độ khởi động của âm thanh đầu vào. 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 để startRecording() quay trở lại.

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

Thời gian khởi động thường có thể được giảm bớt 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ị kernel
  • 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 bật hoặc không cấu hình lại đồng hồ (tăng mức tiêu thụ điện năng khi không hoạt động)
  • Các tham số được 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 hóa quá mức. Bạn có thể thấy rằng mình cần phải cân bằng giữa thời gian khởi động thấp và việc không xảy ra hiện tượng giật khi chuyển đổi sức mạnh.