2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
고해상도 오디오
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
Android 10 출시에는 다음과 같은 고해상도 오디오 개선사항이 포함되어 있습니다.
- 플로팅: WAV, FLAC 코덱, 추출기가 플로팅(24비트 이상의 무손실 정밀도)을 지원하도록 업데이트됩니다. 다운믹스 및 가상화기 효과가 플로팅으로 업데이트됩니다.
업데이트된 정밀도는 MediaPlayer(NuPlayer)에서 허용됩니다.
- 고주파수: WAV, FLAC 코덱, 추출기가 192kHz를 지원하도록 업데이트됩니다.
표준 주파수에서 192kHz를 지원하는지 기본 Android 제공 효과가 테스트됩니다.
허용되는 표준 주파수는 88.2kHz, 96kHz, 176.4kHz, 192kHz입니다.
- 다중 채널: 8개 채널에 다중 채널을 지원하는지 기본 Android 재생 효과가 테스트됩니다.
- 타이밍: 타이밍 정보는 오디오 프레임워크 전체에 포함됩니다.
Android 9부터는 다음 개선사항에 파트너 구현이 필요하지 않습니다.
AudioTrack
의 제한된 클라이언트 인스턴스가 Android 8.x의 앱에서 문제가 되면서 동시 클라이언트 출력 트랙 수가 14개에서 40개로 늘어납니다.
- 최대 클라이언트/서버 메모리가 총 기기 메모리에 따라 4MB에서 32MB로 늘어나 더 많은 고해상도 오디오 트랙을 동시에 사용할 수 있습니다.
- 앱과 시스템 UI 간의 리소스 경합을 방지하기 위해 총 혼합 트랙이 32개에서 256개로 늘어납니다.
출력 효과 변경사항
Android 11 버전 변경사항에 관한 오디오 효과를 참고하세요.
Android 9 출시 이전에는 효과 체인 처리가 스테레오 int16 샘플 형식으로 구현되었으며, 여기에는 일부 제한사항이 있었습니다.
- 모든 출력 효과가 부동 소수점 오디오 데이터에서 int16으로 강제로 변환하여 정밀도 손실이 발생했습니다.
- 채널 수가 3개 이상인 출력 싱크로부터 출력 효과가 거부되었습니다.
Android 9 출시에서는 효과 체인 처리 파이프라인이 다중 채널 플로팅 형식을 지원하도록 업그레이드됩니다. 핵심 사항은 다음과 같습니다.
- Android 소프트웨어 효과는 이미 스테레오 플로팅으로 이전되었습니다.
- 기존 효과는 필요에 따라 플로팅을 int16으로 변환하는 형식 어댑터를 통해 지원됩니다.
출력 효과 구현
출력 효과에 관한 참조 구현은 frameworks/av/media/libeffects
에서 가능합니다.
자체 맞춤 출력 효과를 구현하는 파트너는 Android 10 출시에서 다음을 완료해야 합니다.
- 출력 효과를 업데이트하여 다중 채널 플로팅 형식을 지원합니다.
- int16 처리 지원은 더 이상 필요하지 않습니다.
- 출력 채널 개수는 2~8개를 지원합니다(향후 호환성을 위해 1~30개 지원하는 것을 권장).
- 삽입 효과를 위해 출력 채널 개수와 동일한 입력 채널 개수를 지원합니다. 보조 효과의 경우 입력 채널 개수가 1개(모노)로 유지됩니다.
- 채널 위치 마스크(표준)와
(1 << n) - 1
의 채널 색인 마스크를 모두 지원합니다.
- 기존 공급업체 출력 효과를 계속 지원해야 하는데 업데이트는 할 수 없는 경우 기존 코드를 다음과 같이 확인합니다.
- 기존 출력(삽입) 효과는
EFFECT_CMD_SET_CONFIG
에서 지원되지 않는 구성을 거부해야 합니다.- 형식이 int16인지 확인합니다.
- 입력 및 출력 채널 마스크가 스테레오인지 확인합니다.
- 검사 중 하나가 실패하면
-EINVAL
을 반환합니다.
- 출력 싱크가 멀티 채널인지의 여부에 따라 모노 입력 채널 마스크와 다중 채널 출력 채널 마스크를 사용하여 AudioFlinger에서 기존 출력(보조) 효과를 구성합니다.
기존 출력 효과는
EFFECT_CMD_SET_CONFIG
에서 지원되지 않는 구성을 거부해야 합니다.
- 형식이 int16인지 확인합니다.
- 입력 채널 마스크가 모노이고 출력 채널 마스크가 스테레오인지 확인합니다.
- 검사 중 하나가 실패하면
-EINVAL
을 반환합니다.
- 기존 코드를 인증합니다. 작동한다고 가정하지 않습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# High-resolution audio\n\nThe Android 10 release includes the following\nimprovements for high-resolution audio:\n\n- **Float:** WAV, FLAC codecs, and extractors are updated to support float (24+ bits of lossless precision). Downmix and Virtualizer effects are updated to float. Updated precision is allowed by MediaPlayer (NuPlayer).\n- **High-frequency:** WAV, FLAC codecs, and extractors are updated to support 192 kHz. The default Android supplied effects are tested for 192 kHz support at standard frequencies. The standard frequencies permitted are 88.2 kHz, 96 kHz, 176.4 kHz, and 192 kHz.\n- **Multichannel:** Default Android playback effects are tested for multichannel support to eight channels.\n- **Timing:** Timing information is included throughout the audio framework.\n\nStarting in Android 9, the following improvements\ndon't require any partner implementation:\n\n- The number of simultaneous client output tracks increases from 14 to 40, as limited client instances of `AudioTrack` have been an issue for apps in Android 8.x.\n- Maximum client/server memory increases from 4 MB to 32 MB (depending on total device memory) to allow more simultaneous high-resolution audio tracks.\n- Total mixed tracks increases from 32 to 256 to prevent resource contention between apps and the System UI.\n\nOutput effect changes\n---------------------\n\nSee [Audio\neffects](/docs/core/audio/audio-effects) for Android 11 release changes.\n\nPrior to the Android 9 release, effect chain processing\nwas implemented in stereo int16 sample format. This had several limitations:\n\n- All output effects forced conversion from floating point audio data to int16, causing loss of precision.\n- Output effects were rejected from output sinks with a channel count greater than two.\n\nIn the Android 9 release, the effect chain processing\npipeline is upgraded to support the multichannel float format. Key points:\n\n- Android software effects are already migrated to stereo float.\n- Legacy effects are supported with format adapters, which convert float to int16 as needed.\n\nImplement output effects\n------------------------\n\nA reference implementation for output effects is available under\n`frameworks/av/media/libeffects`.\n\nPartners implementing their own custom output effects should do the\nfollowing for the Android 10 release:\n\n- Update output effects to support the multichannel float format:\n - Int16 processing support is no longer required.\n - Support output channel counts from 2--8 (for future compatibility consider counts from 1--30).\n - Support input channel counts matching output channel counts for insert effects. Auxiliary effects continue to see an input channel count of 1 (mono).\n - Support both channel position masks (canonical) and channel index masks of `(1 \u003c\u003c n) - 1`.\n- If you must continue to support legacy vendor output effects and can't update them, then verify legacy code as follows:\n - Legacy output (insert) effects **must reject** unsupported configurations in `EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input and output channel masks are stereo.\n - If either check fails, return `-EINVAL`.\n - Legacy output (auxiliary) effects are configured by AudioFlinger with a mono input channel mask and potentially multichannel output channel masks, depending on whether the output sink is multichannel. They **must reject** unsupported configurations in `\n EFFECT_CMD_SET_CONFIG`.\n - Check that the format is int16.\n - Check that the input channel mask is mono and the output channel mask is stereo.\n - If either check fails, return `-EINVAL`.\n - Verify legacy code. Don't assume that it works!"]]