오디오 지연 시간 측정

이 페이지에서는 입력 및 출력 지연 시간 측정을 위한 일반적인 방법에 대해 설명합니다.

출력 지연 시간 측정

아래에는 다양한 수준의 정확도와 실행 편의성을 지닌 여러 출력 지연 시간 측정 방법이 설명되어 있습니다. 또한 테스트 회로에서 테스트 환경 예시를 확인하세요.

LED 및 오실로스코프 테스트

이 테스트는 기기의 LED 표시기와 관련해 지연 시간을 측정합니다. 프로덕션 기기에 LED가 없는 경우 LED를 프로토타입 폼 팩터 기기에 설치할 수 있습니다. 회로가 노출된 프로토타입 기기의 정확도를 추가적으로 개선하고 싶은 경우 한 개의 오실로스코프 프로브를 LED에 직접 연결하여 광 센서 지연 시간을 우회하세요.

프로덕션 또는 프로토타입 기기에 LED를 설치할 수 없는 경우 다음 해결 방법을 시도해 보세요.

  • 목적이 같은 경우 GPIO(범용 입력/출력)를 사용합니다.
  • JTAG 또는 다른 디버깅 포트를 사용합니다.
  • 화면 백라이트를 사용합니다. 백라이트에 무시할 수 없는 수준의 지연 시간이 있을 수 있고 부정확한 지연 시간 판독의 원인이 될 수 있는 만큼 이는 위험할 수 있습니다.

테스트 실행 방법:

  1. 주기적으로 오디오가 출력되는 동시에 LED가 깜박거리는 앱을 실행합니다.

    참고: 유용한 결과를 얻으려면 빠른 오디오 출력 경로를 활용할 수 있도록 테스트 앱에 올바른 API를 사용하는 것이 중요합니다. 지연 시간 단축을 위한 디자인에서 배경지식을 확인하세요.

  2. LED 옆에 광 센서를 배치합니다.
  3. 이중 채널 오실로스코프의 프로브를 연결된 헤드폰 잭(라인 출력)과 광 센서 둘 다에 연결합니다.
  4. 오실로스코프를 사용하여 라인 출력 신호 관찰 시점 및 광 센서 신호 사이의 시간차를 측정합니다.

LED 지연 시간 및 광 센서 지연 시간이 둘 다 0이라고 가정한다면 시간차는 대략적인 오디오 출력 지연 시간입니다. 일반적으로 LED와 광 센서는 각각 지연 시간이 비교적 낮은 편이며(대략 1밀리초 미만), 이는 무시할 수 있을 정도로 낮은 수치입니다.

왕복 지연 시간 측정

왕복 지연 시간은 출력 지연 시간과 입력 지연 시간의 합계입니다.

Larsen 테스트

가장 간편한 지연 시간 테스트 중 하나는 오디오 피드백(Larsen 효과) 테스트입니다. 이는 임펄스 응답 루프의 타이밍을 계산하여 출력 및 입력 지연 시간을 합산한 대략적인 측정값을 제공합니다. 이 테스트 자체는 상세 분석에는 딱히 유용하지 않습니다 .이는 테스트의 특성 때문이지만 다른 테스트를 보정하고 상한선을 수립하는 경우에 유용할 수 있습니다.

이 방식은 구성요소 시간을 분류하지 않으며, 이는 출력 지연 시간과 입력 지연 시간이 독립적인 경우에 중요합니다. 따라서 이 방식은 격리 상태에서의 정확한 출력 지연 시간이나 입력 지연 시간 값을 측정하는 경우에는 권장되지 않지만 대략적인 예상값을 수립하는 경우에는 유용할 수 있습니다.

기기 스피커에 대한 출력 지연 시간은 헤드셋 커넥터에 대한 출력 지연 시간보다 상당히 길 수 있습니다. 이는 스피커 보정 및 보호 때문입니다.

테스트 실행 방법:

  1. 마이크에서 오디오 형식을 캡처하는 앱을 실행하고 캡처된 데이터를 즉시 스피커로 재생합니다.
  2. 마이크로 연필을 두드리는 등 외부적으로 사운드를 생성합니다. 이 노이즈는 피드백 루프를 생성합니다. 아니면 소프트웨어를 사용하여 루프에 임펄스를 주입할 수도 있습니다.
  3. 피드백 펄스 간의 시간을 측정하여 출력 지연 시간, 입력 지연 시간 및 애플리케이션 오버헤드의 합계를 얻습니다.

다음은 Larsen 테스트용 앱 다운로드를 위한 일부 리소스입니다.

오디오 루프백 동글

Rick O'Rang 박사의 오디오 루프백 동글은 헤드셋 커넥터를 통해 왕복 지연 시간을 측정하는 경우에 유용합니다. 아래 이미지는 임펄스를 루프에 한 번 주입했을 경우의 결과를 보여준 다음 피드백 루프가 조정될 수 있도록 해줍니다. 조정 기간은 왕복 지연 시간입니다. 구체적인 기기, 소프트웨어 버전 및 테스트 조건은 여기에 명시되어 있지 않습니다. 표시된 결과는 외삽하면 안 됩니다.

왕복 거리 측정

그림 1. 왕복 거리 측정

USB 케이블을 제거하여 노이즈를 줄인 다음 음량을 조절하여 안정적인 보정 결과를 얻어야 할 수도 있습니다.

입력 지연 시간 측정

입력 지연 시간은 출력 지연 시간보다 측정하기가 훨씬 어려우며, 다음 테스트가 도움이 될 수 있습니다.

한 가지 접근 방식은 먼저 LED 및 오실로스코프 방식을 사용하여 출력 지연 시간을 파악한 다음 오디오 피드백(Larsen) 테스트를 사용하여 출력 시간과 입력 시간의 합계를 테스트하는 것입니다. 두 측정값 간의 차이가 입력 지연 시간입니다.

또 하나의 기술은 프로토타입 기기에 GPIO 핀을 사용하는 것입니다. 외부적으로는 오디오 신호를 기기에 제시하는 동시에 GPIO 입력을 깜박이게 합니다. GPIO 신호와 오디오 데이터의 도착 시간 차이를 비교하는 앱을 실행합니다.

지연 시간 단축

낮은 오디오 지연 시간을 달성하려면 시스템 전체의 스케줄링, 장애 처리, 전력 관리 및 기기 드라이버 설계에 세심한 주의를 기울여야 합니다. 목표는 플랫폼의 어떠한 부분도 SCHED_FIFO 오디오 스레드를 2밀리초 이상 차단하지 않도록 하는 것입니다. 이러한 체계적인 접근 방식을 채택하면 오디오 지연 시간을 줄이고 좀 더 예측 가능한 전반적인 성능의 부수적인 이점을 얻을 수 있습니다.

오디오 언더런은 발생할 경우 특정 조건 하에서 또는 전환 시에만 감지되는 경우가 많습니다. 새 앱을 실행하거나 다양한 디스플레이를 빠르게 스크롤하여 시스템에 스트레스를 가해 보세요. 하지만 일부 테스트 조건은 설계 목적을 벗어날 정도로 스트레스가 많이 가해진다는 점을 기억하세요. 예를 들어 bugreport를 취하면 시스템에 거대한 부하가 발생하므로 이러한 경우에는 언더런을 취하는 것이 용인될 수도 있습니다.

언더런 관련 테스트를 실행할 때 다음을 수행합니다.

  • 최소 지연 시간이 더해지도록 앱 프로세서 이후의 모든 DSP를 구성합니다.
  • 화면을 켜거나 끄거나 USB를 연결하거나 분리하거나 WiFi, 블루투스, 텔레포니 및 데이터 라디오를 켜거나 끄는 등의 여러 조건 하에서 테스트를 실행합니다.
  • 언더런을 쉽게 들을 수 있도록 매우 익숙하고 비교적으로 조용한 음악을 선택합니다.
  • 감도를 높이려면 유선 헤드폰을 사용합니다.
  • 귀가 피로하지 않도록 휴식을 취합니다.

언더런의 근본적인 원인을 찾아낸 후에는 버퍼 수와 크기를 줄여 이를 활용합니다. 언더런을 분석하고 언더런의 원인을 해결하기 전에 버퍼 수와 크기를 줄이려고 적극적인 접근 방식을 취하면 답답함만 더욱 커질 뿐입니다.

도구

systrace는 시스템 수준의 성능 문제를 진단하기 위한 훌륭한 범용 도구입니다.

dumpsys media.audio_flinger의 출력에는 '간단한 이동 통계'라는 유용한 섹션도 포함되어 있습니다. 여기에는 각 오디오 믹스 및 I/O 주기의 경과된 시간에 관한 가변성이 요약되어 있습니다. 가장 이상적인 건 모든 시간 측정값이 최소 주기 시간의 평균과 같은 수준인 경우입니다. 최소값이 너무 낮거나 최대값이 높은 경우 이는 높은 스케줄링 지연 시간이나 장애 중지 시간과 같은 문제를 시사합니다. 출력의 꼬리 부분은 +/- 3 표준 편차를 벗어난 가변성을 강조하므로 특히 유용합니다.