Android 14는 앱이 USB 오디오 재생에 기본 믹서 속성을 쿼리하고 구성하는 데 사용할 수 있는 개발자 API를 제공합니다. 이러한 기본 믹서 속성은 앱이 오디오 형식, 채널 마스크, 샘플링 레이트, 믹서 동작을 설정할 수 있도록 하여 USB 오디오 재생 환경을 개선합니다. 지원되는 USB 기기에서 기본 믹서 API를 사용하면 지연 시간이 짧은 오디오 재생과 고해상도 오디오 콘텐츠를 얻을 수 있습니다.
이 기능은 USB 기기용 선택적인 비트퍼펙트 재생 믹서 동작도 지원합니다. 비트퍼펙트 모드를 사용하면 호환되는 디지털-아날로그 변환기(DAC)에서 마스터 품질 인증(MQA) 및 디렉트 스트림 디지털(DSD) 형식을 재생할 수 있습니다.
인터페이스
오디오 정책 관리자는 프레임워크에서 믹서 속성을 처리합니다. AudioMixerAttributes 클래스는 믹서의 속성을 나타냅니다. AudioMixerAttributes 클래스에는 믹서의 오디오 데이터 형식, 채널 마스크, 샘플링 레이트를 설명하는 AudioFormat 객체가 포함되어 있습니다. 기본적으로 프레임워크는 모든 오디오 소스를 믹스하고 볼륨 컨트롤 및 효과를 적용하는 믹서 동작을 결정합니다.
믹서 동작이 BIT_PERFECT 모드를 사용하는 경우 시스템은 오디오 프레임워크, HAL, 선택적으로 디지털 신호 프로세서(DSP)를 통해 오디오 콘텐츠를 수정 없이 API에서 USB 기기로 전송합니다. BIT_PERFECT 모드는 볼륨 조정 또는 믹싱이 데이터의 의미를 파괴할 수 있는 MQA 또는 DSD와 같은 인코딩된 형식을 지원합니다.
앱이 믹서 속성을 구성할 때 프레임워크는 필요한 경우 새 속성으로 출력 스트림을 다시 엽니다. 다음 그림은 믹서 속성이 설정되는 경우 앱과 프레임워크, HAL 간의 인터페이스를 보여줍니다.
그림 1. 앱과 프레임워크, HAL 간의 인터페이스
구현
Android 14에서는 BIT_PERFECT 속성을 제외한 USB 오디오용 기본 믹서 속성을 구현해야 합니다.
기본 믹서 속성
기본 믹서 속성을 지원하려면 공급업체는 다음과 같이 USB 기기를 동적 믹스 포트로 라우팅하는 것을 지원해야 합니다.
비트퍼펙트 재생 속성이 지정되면 HAL은 오디오 스트림이 수정 없이 USB 기기에 전송되도록 해야 합니다. 즉, 오디오 스트림에 볼륨 조정, 샘플링 레이트 변환 또는 오디오 처리 효과가 없어야 하고 DSP에서 믹스되면 안 됩니다.
이 경우 프레임워크가 소프트웨어 볼륨 컨트롤을 제공하지 않으므로 하드웨어가 볼륨을 제어합니다.
BIT_PERFECT 속성의 구현을 검증하려면 펄스 코드 변조(PCM) 오디오 형식을 통해 MQA 및 DSD를 지원하는 USB DAC를 사용합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-26(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-26(UTC)"],[],[],null,["# Preferred mixer attributes on USB devices\n\nAndroid 14 provides [developer APIs](https://developer.android.com/reference/android/media/AudioMixerAttributes)\nthat apps can use to query and configure preferred mixer attributes for USB\naudio playback. These [preferred mixer attributes](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/media/java/android/media/AudioMixerAttributes.java)\nimprove the USB audio playback experience by letting apps set the audio format,\nchannel mask, sample rate, and mixer behavior. With the use of the preferred\nmixer APIs on supported USB devices, users can get lower-latency audio playback\nand higher-resolution audio content.\n\nThis feature also provides support for the optional bit-perfect playback mixer\nbehavior for USB devices. The bit-perfect mode enables playback for master\nquality authenticated (MQA) and direct stream digital (DSD) formats on\ncompatible digital to analog converters (DACs).\n\nInterface\n---------\n\nThe Audio Policy Manager handles the mixer attributes in the framework. The\n[`AudioMixerAttributes`](https://developer.android.com/reference/android/media/AudioMixerAttributes)\nclass represents the mixer's attributes. The `AudioMixerAttributes` class includes an\n[`AudioFormat`](https://developer.android.com/reference/android/media/AudioFormat)\nobject that describes the audio data format, channel mask, and sample rate for\nthe mixer. By default, the framework determines the mixer behavior, which mixes\nall audio sources and applies volume control and effects.\n\nIf the mixer behavior uses `BIT_PERFECT` mode, the system sends the audio\ncontent without modification through the audio framework, HAL and optionally\ndigital signal processor (DSP), from the API down to the USB device. The\n`BIT_PERFECT` mode supports encoded formats, such as MQA or DSD, on which any\nvolume scaling or mixing can destroy the meaning of the data.\n\nWhen apps configure mixer attributes, the framework reopens the output stream\nwith new attributes, if needed. The following figure shows the interface between\nthe app, framework, and the HAL when mixer attributes are set:\n\n**Figure 1.** Interface between the app, framework, and HAL.\n\nImplementation\n--------------\n\nImplementation of preferred mixer attributes, other than the `BIT_PERFECT`\nattribute, for USB audio is mandatory for Android 14.\n\n### Preferred mixer attributes\n\nTo support preferred mixer attributes, vendors must support routing USB devices\nto the dynamic mix port, as follows:\n\n1. Define the dynamic mix port in [`usb_audio_policy_configuration.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml).\n\n2. Declare the ability to route USB devices to dynamic mix ports either in\n [audio policy configuration](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml)\n or in the [`getAudioPorts`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/audio/aidl/android/hardware/audio/core/IModule.aidl;drc=0abca2170b9e49c23f511ff1a6a99e5db8ab4104;l=267) and [`getAudioRoutes`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/audio/aidl/android/hardware/audio/core/IModule.aidl;drc=0abca2170b9e49c23f511ff1a6a99e5db8ab4104;l=279) AIDL methods.\n\n| **Note:** If the USB audio functionality is migrated to the primary HAL, define the dynamic mix port and USB audio routing in the [audio policy configuration](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml) file for your primary HAL.\n\nSee the reference implementation for the USB audio HAL under [`hardware/libhardware/modules/usbaudio`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/libhardware/modules/usbaudio/).\nSee an example of a dynamic mix port in [`frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml).\n| **Note:** Only USB devices are allowed to set preferred mixer attributes.\n\n### Bit-perfect playback attribute\n\nThe bit-perfect playback attribute is optional and is supported only in the AIDL\nimplementation of the Audio HAL. To support bit-perfect playback, vendors must\nadd the bit-perfect output flag `AUDIO_OUTPUT_FLAG_BIT_PERFECT` to the dynamic\nmix port that can be routed to the USB device.\n\nThe following code sample shows the use of the `AUDIO_OUTPUT_FLAG_BIT_PERFECT`\nflag in `usb_audio_policy_configuration.xml`: \n\n \u003cmodule name=\"usb\" halVersion=\"2.0\"\u003e\n \u003cmixPorts\u003e\n \u003cmixPort name=\"hifi_output\"\n role=\"source\" flags=\"AUDIO_OUTPUT_FLAG_BIT_PERFECT\"\u003e\n \u003c/mixPort\u003e\n \u003c/mixPorts\u003e\n \u003cdevicePorts\u003e\n \u003cdevicePort tagName=\"USB Device Out\"\n type=\"AUDIO_DEVICE_OUT_USB_DEVICE\" role=\"sink\"\u003e\n \u003c/devicePort\u003e\n \u003c/devicePorts\u003e\n \u003croutes\u003e\n \u003croute type=\"mix\" sink=\"USB Device Out\"\n sources=\"hifi_output\"/\u003e\n \u003c/routes\u003e\n \u003c/module\u003e\n\nIf the bit-perfect playback attribute is specified, the HAL must ensure that the\naudio stream is sent to the USB device without any modification, that is, the\naudio stream must not have any volume scaling, sample rate conversion, or audio\nprocessing effects and must not be mixed in the DSP.\nIn this case, the hardware controls the volume as the framework doesn't provide\nany software volume control.\n| **Note:** Without the bit-perfect playback attribute, apps can't stream high-resolution content, such as DSD and MQA, through the audio framework.\n\nValidation\n----------\n\nRun the CTS tests in\n[`PreferredMixerAttributesTestActivity.java`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/apps/CtsVerifier/src/com/android/cts/verifier/audio/PreferredMixerAttributesTestActivity.java)\nto validate support for preferred mixer attributes for USB devices.\n\nTo validate the implementation of the `BIT_PERFECT` attribute, use USB DACs that\nsupport MQA and DSD over pulse-code modulation (PCM) audio formats."]]