이 도움말에서는 Android 내의 리샘플링이라는 샘플링 레이트 변환에 관해 설명합니다. 샘플링 레이트 변환과 관련된 용어는 용어를 참고하세요.
샘플링 레이트 변환은 한 샘플링 레이트의 개별 샘플 스트림을 다른 샘플링 레이트의 또 다른 스트림으로 변경하는 프로세스입니다. 리샘플러라고도 하는 샘플링 레이트 변환기는 샘플링 레이트 변환을 구현하는 모듈입니다. 리샘플러와 관련하여 원본 스트림은 소스 신호라 하고 리샘플링된 스트림은 싱크 신호라고 합니다.
리샘플러는 Android의 여러 위치에서 사용됩니다. 예를 들어 MP3 파일이 44.1kHz 샘플링 레이트로 인코딩되는데, 내부적으로 48kHz 오디오를 지원하는 Android 기기에서 재생되어야 한다고 가정합니다. 이 경우 리샘플러는 MP3 출력 오디오를 44.1kHz 소스 샘플링 레이트에서 Android 기기 내에서 사용되는 48kHz 싱크 샘플링 레이트로 업샘플링하는 데 사용될 수 있습니다.
리샘플러의 특성은 다음과 같은 측정항목을 사용하여 표현할 수 있습니다.
- 신호의 총 진폭 보존 정도
- 싱크 샘플링 레이트의 제한사항에 따른 신호의 주파수 대역폭 보존 정도
- 리샘플러로 인한 총 지연 시간
- 주파수와 관련하여 일관적인 위상 및 그룹 지연
- CPU 주기 또는 전력 사용량에서 표현되는 계산 복잡성
- 소스 및 싱크 샘플링 레이트의 허용 비율
- 샘플링 레이트 비율을 동적으로 변경하는 기능
- 지원되는 디지털 오디오 샘플 형식
이상적인 리샘플러는 소스 신호의 진폭 및 주파수 대역폭을 정확히 보존하고(싱크 샘플링 레이트의 제한사항에 따름) 지연을 최소한으로 그리고 일관되게 유지합니다. 또한 계산 복잡성을 최소화하고 임의 및 동적 변환 비율을 허용하며 일반적인 모든 디지털 오디오 샘플 형식을 지원합니다. 실제 리샘플러에서는 이러한 특성이 절충되므로 현실에서 이상적인 리샘플러는 존재하지 않습니다. 예를 들어 이상적인 품질을 목표로 하면 짧은 지연과 낮은 복잡성을 어느 정도 포기해야 합니다.
Android에는 다양한 오디오 리샘플러가 포함되어 있어 애플리케이션 사용 사례 및 로드에 따라 적절한 절충이 이루어질 수 있습니다. 사용 가능한 리샘플러는 리샘플러 구현에 설명되어 있습니다.
리샘플러 구현
사용 가능한 리샘플러 구현은 자주 변경되며 OEM에서 맞춤설정할 수 있습니다. 신호 왜곡의 내림차순 및 계산 복잡도의 오름차순이 적용된 기본 리샘플러에는 다음이 포함됩니다.
- 선형
- 3차
- 원본 계수가 있는 싱크
- 수정된 계수가 있는 싱크
일반적으로 싱크 리샘플러는 고품질 음악 재생에 더 적합하기 때문에 품질이 덜 중요한 경우에는 다른 리샘플러를 예약해야 합니다(예: '키 클릭' 등).
선택한 특정 리샘플러 구현은 사용 사례, 로드, 시스템 속성 af.resampler.quality
의 값에 따라 다릅니다. 자세한 내용은 AudioFlinger의 오디오 리샘플러 소스 코드를 참고하세요.