Trang này mô tả các phương pháp phổ biến để đo độ trễ đầu vào và đầu ra.
Đo độ trễ đầu ra
Có một số kỹ thuật có sẵn để đo độ trễ đầu ra, với mức độ chính xác và dễ chạy khác nhau, được mô tả bên dưới. Đồng thời xem Mạch kiểm tra để biết ví dụ về môi trường kiểm tra.
Kiểm tra đèn LED và máy hiện sóng
Thử nghiệm này đo độ trễ liên quan đến đèn LED của thiết bị. Nếu thiết bị sản xuất của bạn không có đèn LED, bạn có thể lắp đặt đèn LED trên thiết bị có dạng nguyên mẫu. Để có độ chính xác cao hơn nữa trên các thiết bị nguyên mẫu có mạch hở, hãy kết nối trực tiếp một đầu dò dao động với đèn LED để bỏ qua độ trễ của cảm biến ánh sáng.
Nếu bạn không thể lắp đặt đèn LED trên thiết bị sản xuất hoặc nguyên mẫu của mình, hãy thử các cách giải quyết sau:
- Sử dụng chân Đầu vào/Đầu ra Mục đích Chung (GPIO) cho cùng mục đích.
- Sử dụng JTAG hoặc cổng gỡ lỗi khác.
- Sử dụng đèn nền màn hình. Điều này có thể nguy hiểm vì đèn nền có thể có độ trễ không đáng kể và có thể góp phần khiến kết quả đo độ trễ không chính xác.
Để tiến hành thử nghiệm này:
- Chạy một ứng dụng phát xung đèn LED định kỳ vào cùng thời điểm nó phát ra âm thanh.
Lưu ý: Để có được kết quả hữu ích, điều quan trọng là phải sử dụng đúng API trong ứng dụng thử nghiệm để bạn có thể thực hiện đường dẫn đầu ra âm thanh nhanh. Xem Thiết kế để giảm độ trễ cho nền.
- Đặt cảm biến ánh sáng bên cạnh đèn LED.
- Kết nối các đầu dò của máy hiện sóng kênh đôi với cả giắc cắm tai nghe có dây (đầu ra đường truyền) và cảm biến ánh sáng.
- Sử dụng máy hiện sóng để đo chênh lệch thời gian giữa việc quan sát tín hiệu đầu ra đường truyền và tín hiệu cảm biến ánh sáng.
Sự khác biệt về thời gian là độ trễ đầu ra âm thanh gần đúng, giả sử rằng độ trễ của đèn LED và độ trễ của cảm biến ánh sáng đều bằng 0. Thông thường, đèn LED và cảm biến ánh sáng đều có độ trễ tương đối thấp vào khoảng một mili giây trở xuống, đủ thấp để có thể bỏ qua.
Đo độ trễ khứ hồi
Độ trễ khứ hồi là tổng độ trễ đầu ra và độ trễ đầu vào.
Kiểm tra Larsen
Một trong những bài kiểm tra độ trễ dễ dàng nhất là kiểm tra phản hồi âm thanh (hiệu ứng Larsen). Điều này cung cấp thước đo thô về độ trễ đầu ra và đầu vào kết hợp bằng cách định thời gian cho một vòng phản hồi xung. Bản thân thử nghiệm này không hữu ích lắm cho việc phân tích chi tiết vì bản chất của thử nghiệm, nhưng nó có thể hữu ích cho việc hiệu chỉnh các thử nghiệm khác và để thiết lập giới hạn trên.
Phương pháp này không chia nhỏ thời gian thành phần, điều này rất quan trọng khi độ trễ đầu ra và độ trễ đầu vào độc lập. Vì vậy, phương pháp này không được khuyến nghị để đo các giá trị độ trễ đầu ra hoặc độ trễ đầu vào chính xác một cách riêng biệt, nhưng có thể hữu ích cho việc thiết lập các ước tính sơ bộ.
Độ trễ đầu ra của loa trên thiết bị có thể lớn hơn đáng kể so với độ trễ đầu ra của đầu nối tai nghe. Điều này là do sự điều chỉnh và bảo vệ loa.
Để tiến hành thử nghiệm này:
- Chạy một ứng dụng thu âm thanh từ micrô và ngay lập tức phát lại dữ liệu đã ghi qua loa.
- Tạo âm thanh bên ngoài, chẳng hạn như gõ bút chì vào micrô. Tiếng ồn này tạo ra một vòng phản hồi. Ngoài ra, người ta có thể đưa xung vào vòng lặp bằng phần mềm.
- Đo thời gian giữa các xung phản hồi để có được tổng độ trễ đầu ra, độ trễ đầu vào và chi phí ứng dụng.
Dưới đây là một số tài nguyên để tải ứng dụng cho bài kiểm tra Larsen:
- Ứng dụng loopback của Tiến sĩ Rick O'Rang là một ứng dụng Android để kiểm tra phản hồi âm thanh. Bạn có thể tải xuống ứng dụng từ Google Play hoặc lấy mã nguồn từ GitHub .
- Chúng tôi cũng đã xuất bản một ví dụ triển khai tại slesTestFeedback.cpp . Đây là một ứng dụng dòng lệnh và được xây dựng bằng môi trường xây dựng nền tảng; tuy nhiên việc áp dụng mã cho các môi trường khác sẽ dễ dàng. Bạn cũng sẽ cần mã FIFO không chặn nằm trong thư viện
audio_utils
.
Dongle vòng lặp âm thanh
Khóa vòng lặp âm thanh Dr. Rick O'Rang rất tiện lợi để đo độ trễ khứ hồi qua đầu nối tai nghe. Hình ảnh bên dưới minh họa kết quả của việc đưa một xung vào vòng lặp một lần, sau đó cho phép vòng phản hồi dao động. Chu kỳ dao động là độ trễ khứ hồi. Thiết bị cụ thể, bản phát hành phần mềm và điều kiện thử nghiệm không được chỉ định ở đây. Các kết quả hiển thị không nên được ngoại suy.
Bạn có thể cần phải tháo cáp USB để giảm tiếng ồn và điều chỉnh mức âm lượng để có được dao động ổn định.
Đo độ trễ đầu vào
Độ trễ đầu vào khó đo hơn độ trễ đầu ra. Các xét nghiệm sau đây có thể giúp ích.
Một cách tiếp cận trước tiên là xác định độ trễ đầu ra bằng phương pháp đèn LED và máy hiện sóng, sau đó sử dụng thử nghiệm phản hồi âm thanh (Larsen) để xác định tổng độ trễ đầu ra và độ trễ đầu vào. Sự khác biệt giữa hai phép đo này là độ trễ đầu vào.
Một kỹ thuật khác là sử dụng chân GPIO trên thiết bị nguyên mẫu. Bên ngoài, phát xung đầu vào GPIO cùng lúc khi bạn truyền tín hiệu âm thanh đến thiết bị. Chạy một ứng dụng so sánh sự khác biệt về thời gian đến của dữ liệu âm thanh và tín hiệu GPIO.
Giảm độ trễ
Để đạt được độ trễ âm thanh thấp, hãy đặc biệt chú ý đến toàn bộ hệ thống trong việc lên lịch, xử lý ngắt, quản lý nguồn điện và thiết kế trình điều khiển thiết bị. Mục tiêu của bạn là ngăn chặn bất kỳ phần nào của nền tảng chặn luồng âm thanh SCHED_FIFO
trong hơn vài mili giây. Bằng cách áp dụng cách tiếp cận có hệ thống như vậy, bạn có thể giảm độ trễ âm thanh và nhận được lợi ích phụ là hiệu suất tổng thể dễ dự đoán hơn.
Lỗi âm thanh, khi chúng xảy ra, thường chỉ có thể được phát hiện trong một số điều kiện nhất định hoặc chỉ khi chuyển tiếp. Hãy thử nhấn mạnh hệ thống bằng cách khởi chạy ứng dụng mới và cuộn nhanh qua các màn hình khác nhau. Nhưng hãy lưu ý rằng một số điều kiện thử nghiệm căng thẳng đến mức vượt quá mục tiêu thiết kế. Ví dụ: việc báo cáo lỗi sẽ tạo ra tải trọng lớn cho hệ thống đến mức có thể chấp nhận được việc có lỗi xảy ra trong trường hợp đó.
Khi kiểm tra lỗi chạy dưới:
- Định cấu hình bất kỳ DSP nào sau bộ xử lý ứng dụng để nó tăng thêm độ trễ tối thiểu.
- Chạy thử nghiệm trong các điều kiện khác nhau, chẳng hạn như bật hoặc tắt màn hình, cắm hoặc rút USB, bật hoặc tắt WiFi, bật hoặc tắt Bluetooth, bật hoặc tắt điện thoại và radio dữ liệu.
- Chọn những bản nhạc tương đối yên tĩnh mà bạn rất quen thuộc và dễ nghe thấy những âm thanh trầm.
- Sử dụng tai nghe có dây để tăng độ nhạy.
- Hãy cho bản thân nghỉ ngơi để không bị "mệt tai".
Sau khi bạn tìm thấy nguyên nhân cơ bản của việc chạy ngầm, hãy giảm số lượng và kích thước bộ đệm để tận dụng lợi thế này. Cách tiếp cận háo hức nhằm giảm số lượng và kích thước bộ đệm trước khi phân tích các lỗi chạy ngầm và khắc phục nguyên nhân gây ra lỗi chạy ngầm chỉ dẫn đến sự thất vọng.
Công cụ
systrace
là một công cụ đa năng tuyệt vời để chẩn đoán các trục trặc về hiệu suất ở cấp hệ thống.
Đầu ra của dumpsys media.audio_flinger
cũng chứa một phần hữu ích được gọi là "thống kê di chuyển đơn giản". Phần này có bản tóm tắt về sự thay đổi của thời gian đã trôi qua đối với từng hỗn hợp âm thanh và chu kỳ I/O. Lý tưởng nhất là tất cả các phép đo thời gian phải gần bằng thời gian chu kỳ trung bình hoặc danh nghĩa. Nếu bạn thấy mức tối thiểu hoặc mức tối đa cao rất thấp thì đây là dấu hiệu của sự cố, có thể là độ trễ lên lịch cao hoặc thời gian vô hiệu hóa gián đoạn. Phần đuôi của kết quả đầu ra đặc biệt hữu ích vì nó làm nổi bật sự biến thiên vượt quá +/- 3 độ lệch chuẩn.