이 항목에서는 Windows 11부터 Bluetooth용 빌드 10.0.22000부터 사용할 수 있는 오디오 사이드밴드 A2DP 오프로드에 대해 설명합니다.
오디오 사이드밴드 A2DP 오프로드의 주요 목표는 예를 들어 음악 재생 중 전력 소비를 줄이는 것입니다.
이 문서에서는 기존 HF 사이드밴드 솔루션에 대해 잘 알고 있다고 가정합니다. 오디오 드라이버에 대한 Bluetooth 바이패스 지침 및 이 항목의 참고 섹션에 참조된 A2DP Bluetooth 사양을 참조하세요.
사이드밴드 아키텍처 디자인
오디오 사이드밴드 A2DP 오프로드는 통합(기본 제공) 스피커 또는 연결된 아날로그 헤드폰을 통해 선형 오디오 콘텐츠를 재생하는 동안 전력 소비를 줄이기 위해 검증된 기존 디자인을 기반으로 합니다. 간단히 말해, 이러한 디자인은 공급업체별 오디오 드라이버를 통해 대량의 오디오 데이터(1초 순서)를 오디오 DSP로 버스트합니다. 오디오 DSP가 기본 제공 스피커를 통해 버스트된 오디오 데이터를 스트림하는 동안 주 프로세서 및 대부분의 다른 회로는 저전력 상태로 전환됩니다. 오디오 데이터가 거의 고갈되면 DSP는 오디오 드라이버에 인터럽트를 발생시키는데, 이는 오디오 드라이버를 통해 더 많은 오디오 데이터를 DSP로 버스트하도록 OS에 신호를 전송합니다.
다음 다이어그램의 연한 회색 구성 요소는 IHV에서 제공합니다.
오디오 사이드밴드 A2DP 오프로드는 동일한 오디오 DSP가 Bluetooth 컨트롤러에 직접 연결되는 Bluetooth SCO 오디오 경로에 대한 일반적인 디자인을 기반으로 합니다.
이 연결은 종종 I2S 또는 PCM 인터페이스이지만 SLIMbus와 같은 더 풍부하고 복잡한 버스일 수도 있습니다. Microsoft는 이 아키텍처를 사이드밴드 오디오라고 하며, 오디오가 일반 컨트롤러 인터페이스("HCI")가 아닌 대체 경로를 통해 Bluetooth(또는 기타) 컨트롤러로 전송된다는 사실을 반영합니다. 이 경우 오디오 드라이버는 OS에서 오디오 DSP로 오디오 데이터를 전송하고, 오디오 DSP는 사이드밴드 연결을 통해 하드웨어 버스 컨트롤러로 데이터를 전송하고, 컨트롤러는 오디오 데이터를 연결된 디바이스로 전송합니다. (양방향 오디오의 경우 역방향도 발생합니다.) 더 많은 구성 요소가 관련되어 있지만 일반 컨트롤러 인터페이스에 비해 이점이 있을 수 있습니다. 일부 사용 사례(주로 셀룰러 호출)에서는 전체 엔드투엔드 오디오 신호 경로가 주 프로세서에서 오프로드된 펌웨어에 의해 처리됩니다. 또한 호스트 소프트웨어와 실시간/등시 오디오 데이터 전송을 위한 더 나은 인터페이스를 제공 할 수 있습니다. 이 사이드밴드 연결의 경우 Microsoft는 오디오 드라이버에서 이 물리적 디자인을 갖는 오디오 엔드포인트를 지원하는 데 사용하는 사이드밴드 DDI를 정의합니다.
구성 요소
IHV 오디오 드라이버(오디오 DSP 드라이버)
이 드라이버는 통합 오디오 엔드포인트, 셀룰러 오디오 및 HFP/SCO 사이드밴드/오프로드를 제어합니다. 이 기능을 사용하려면 드라이버에서 A2DP 오프로드도 지원해야 합니다. 드라이버의 책임은 HFP/SCO에 대한 책임과 같습니다.
IHV Bluetooth 전송 드라이버 및 컨트롤러
A2DP 오프로드는 Bluetooth SIG 표준에 정의되어 있지 않습니다. 이 기능은 Microsoft에서 정의한 Bluetooth HCI 명령을 향상시키고 추가합니다. 이 기능을 지원하기 위해 IHV의 Bluetooth 컨트롤러 또는 IHV 드라이버는 이러한 명령을 지원해야 합니다.
A2DP 프로필 드라이버
이 드라이버는 Windows에서 제공합니다. 해당 함수에는 다음이 포함됩니다.
- A2DP 및 AVDTP 사양 구현
- IHV 오디오 드라이버가 요청을 검색, 열기 및 보낼 수 있도록 PnP 디바이스 인터페이스 인스턴스(A2DP 사이드밴드 인터페이스)를 노출합니다.
- 이 문서에 정의된 사이드밴드 IOCTL 요청을 지원합니다.
- A2DP 오프로드에 대한 Microsoft 정의 Bluetooth HCI 명령을 보냅니다.
IHV 오디오 드라이버(오디오 DSP 드라이버) 요구 사항
시스템의 오디오 드라이버가 A2DP 사이드밴드 스트리밍용으로 구성된 경우 클래스 GUID가 {2BC51EE4-07AF-49CF-B04B-FB3F1C26AADC}로 설정된 GUID_SIDEBANDAUDIO_A2DP_SUPPORT_INTERFACE
디바이스 인터페이스를 게시해야 합니다. 이 디바이스 인터페이스는 늦어도 오디오 드라이버의 PnP 시작에 있어야 합니다.
사이드밴드 데이터 구조
오디오 드라이버에서 사용하는 일부 데이터 구조 및 상수는 sidebandaudio.h 헤더에 정의되어 있습니다.
다음 데이터 구조는 오디오 사이드밴드 A2DP 오프로드에 사용됩니다.
디바이스 설명자 - SIDEBANDAUDIO_DEVICE_DESCRIPTOR
요소 | 설명 |
---|---|
NumberOfEndpoints | 연결된 디바이스의 엔드포인트 수를 나타냅니다. |
연결된 디바이스는 여러 오디오 엔드포인트(스피커, 마이크 등)를 포함하는 복합 디바이스일 수 있습니다. 오디오 드라이버는 각 엔드포인트에 대해 반복하고 각 엔드포인트에 대한 KS 필터를 빌드하는 추가 세부 정보를 가져올 수 있습니다.
엔드포인트 설명자 - SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR
SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR 다음과 같이 정의됩니다.
요소 | 설명 |
---|---|
CbSize | 엔드포인트 설명자의 총 크기입니다. 여기에는 문자열을 저장하기 위한 버퍼가 포함됩니다. |
ContainerId | 엔드포인트에 대한 GUID입니다. 여러 엔드포인트에 대한 일반적인 GUID는 해당 엔드포인트가 동일한 실제 컨테이너 내에 포함되어 있음을 나타냅니다. OS는 이러한 엔드포인트를 다양한 시나리오에 쉽게 연결할 수 있습니다. |
범주 | KSPIN_DESCRIPTOR. 각 엔드포인트의 폼 팩터를 나타내는 범주입니다. |
방향 | 캡처 또는 렌더링 데이터 흐름 방향을 나타냅니다. |
Capabilities | (아래 표 참조) |
FriendlyName | 엔드포인트 KS 필터 인터페이스의 DEVPKEY_DeviceInterface_FriendlyName 적용할 엔드포인트의 이름입니다. |
VolumePropertyValuesSize | 각 채널의 볼륨 스테핑 및 범위를 설명하는 KSPROPERTY_DESCRIPTION 구조의 크기입니다. |
SidetoneVolumePropertyValueSize | 사이드톤에 대한 각 채널의 볼륨 스테핑 및 범위를 설명하는 KSPROPERTY_DESCRIPTION 구조체의 크기입니다. |
엔드포인트 설명자 - SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR - 기능
기능은 다음과 같이 정의됩니다.
요소 | 설명 |
---|---|
부피 | 엔드포인트에서 볼륨 제어를 지원합니다. |
음소거 | 엔드포인트에서 음소거 컨트롤을 지원합니다. |
사이드톤 | 엔드포인트에서 사이드톤 컨트롤을 지원합니다. |
피드백 | 엔드포인트에 연결된 피드백 채널이 있습니다. |
SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR2
A2DP 사이드밴드는 기존 SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR 구조의 업데이트된 버전을 사용하여 엔드포인트 식별을 위해 Windows 오디오 시스템에 필요한 추가 정보인 SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR2 제공합니다.
// Number of device properties that shall be added to the audio filter factory interface.
ULONG FilterInterfacePropertyCount;
DEVPROPERTY* FilterInterfaceProperties;
오디오 드라이버는 새 IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2 요청을 사용하여 이 데이터 구조를 가져옵니다. 요청이 완료되면 오디오 드라이버는 토폴로지 오디오 필터 인터페이스에 이러한 디바이스 속성을 추가합니다.
오디오 인터페이스 매개 변수
오디오 장치와 Bluetooth 컨트롤러 간의 오디오 전송 선택 및 디자인은 공급업체별로 다릅니다. 이 오디오 전송은 종종 I2S 또는 PCM 인터페이스이지만 SLIMbus 또는 잠재적으로 SoundWire와 같은 더 풍부하고 복잡한 버스일 수도 있습니다. 이 기능 디자인은 오디오 전송에 대한 특정 요구 사항을 적용하지 않습니다. 그러나 Bluetooth 코덱이 오디오 DSP에서 구현되는 경우 Bluetooth 컨트롤러는 오디오 전송을 통해 전송되는 데이터에서 인코딩된 프레임을 추출하여 이러한 프레임을 전송을 위해 AVDTP 미디어 패킷으로 패키징할 수 있습니다.
오디오 전송의 설정 및 구성(있는 경우)은 공급업체별 작업으로 간주됩니다. 이 기능은 이 기능의 구성 요소 간에 전달되는 공급업체별 오디오 인터페이스 매개 변수에 의해 촉진됩니다. 공급업체별 매개 변수는 일반적으로 오디오 드라이버 공급업체 및 Bluetooth 컨트롤러 및/또는 전송 드라이버 공급업체에서 정의합니다. 매개 변수는 오디오 디바이스와 Bluetooth 컨트롤러에서 오디오 DSP와 Bluetooth 컨트롤러 간의 오디오 전송을 구성하는 데 사용됩니다.
예를 들어 이 데이터에는 여러 물리적 또는 논리적 연결, PCM 인터페이스의 신호 사용 구성 또는 전송 전체의 오디오 데이터 형식이 있는 경우 전송 ID가 포함될 수 있습니다.
오디오 드라이버는 GUID 및 정수를 사용하여 데이터를 식별하는 SIOP를 사용하여 공급업체별 오디오 인터페이스 매개 변수를 설정하고 가져옵니다. 그러나 보다 자연스러운 Bluetooth HCI 명령 집합을 유지하기 위해 Microsoft에서 정의한 HCI 명령은 다음 구조를 사용하여 공급업체별 오디오 인터페이스 매개 변수를 전달합니다.
오디오 인터페이스 매개 변수
필드 | 옥텟 |
---|---|
공급업체 ID | 0..3 |
공급업체별 매개 변수 ID | 4..5 |
공급업체별 값의 길이 = (n-9) | 6 |
공급업체별 값 | 7.. n |
공급업체 ID는 Bluetooth 할당 번호에 정의되어 있습니다. https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers
A2DP 드라이버는 오디오 드라이버에 대한 보다 자연스러운 데이터 구조인 공급업체-SIOP와 Bluetooth HCI에 더 자연스러운 오디오 인터페이스 매개 변수 간에 직선 변환을 수행합니다. 공급업체 SIOP GUID는 기본 GUID와 4자 Bluetooth 공급업체 ID를 사용하여 생성됩니다. 공급업체 ID(전체 GUID가 아님)만 Bluetooth HCI를 통과합니다.
기본 GUID는 .입니다 SIDEBANDAUDIO_PARAMS_SET_A2DP
.
Microsoft에서 정의한 A2DP SIOP
Microsoft는 코덱 정보를 제공하는 A2DP용 두 개의 SIOP를 정의합니다. 공급업체는 구현을 지원하기 위해 추가 SIOP를 정의할 수 있습니다.
코덱(코덱-SIOP)
오디오 드라이버는 이 SIOP를 사용하여 지원되는 A2DP 코덱(있는 경우) 목록을 표시합니다. 이 SIOP에 대한 SIDEBANDAUDIO_IO_PARAM_HEADER 필드는 다음과 같이 설정됩니다.
필드 | 값 |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP({8FE0297F-3AE6-4384-ACE3-87589E571B9C}) |
TypeId | SIDEBANDAUDIO_PARAM_A2DP_CODECS (1) |
크기 | 이 헤더 뒤에 오는 코덱 기능 목록의 총 크기 |
이 헤더 뒤에 오는 데이터는 위의 코덱 기능 정보에 설명된 대로 (가변 크기) 코덱 기능 구조의 시퀀스입니다.
이 항목의 나머지 부분에 대해 이 매개 변수를 코덱 SIOP라고 합니다.
구성된 코덱(configured-codec-SIOP)
오디오 드라이버는 이 SIOP를 사용하여 현재 구성된 A2DP 코덱을 검색할 수 있습니다. 이 SIOP에 대한 SIDEBANDAUDIO_IO_PARAM_HEADER 필드는 다음과 같이 설정됩니다.
필드 | 값 |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP({8FE0297F-3AE6-4384-ACE3-87589E571B9C}) |
TypeId | SIDEANDAUDIO_PARAM_A2DP_CONFIGURED_CODEC (2) |
크기 | 이 헤더 뒤에 오는 코덱 기능의 총 크기 |
이 헤더 뒤에 오는 데이터는 위의 코덱 기능 정보에 설명된 대로 단일(가변 크기) 코덱 기능 구조입니다.
이 SIOP는 업데이트할 수 있습니다. 즉, 오디오 드라이버가 IOCTL_SBAUD_GET_SIOP_UPDATE 요청을 사용하여 구성된 코덱의 변경 내용을 계속 알려야 합니다.
이 항목의 나머지 부분에 대해 이 매개 변수를 configured-codec-SIOP라고 합니다.
코덱 활성 대기 시간 모드(codec-latency-mode-SIOP)
오디오 드라이버는 이 SIOP를 사용하여 현재 구성된 A2DP 코덱의 활성 대기 시간 모드를 검색할 수 있습니다. 이 SIOP에 대한 SIDEBANDAUDIO_IO_PARAM_HEADER 필드는 다음과 같이 설정됩니다.
필드 | 값 |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP |
TypeId | SIDEBANDAUDIO_PARAM_A2DP_CODEC_LATENCY_MODE |
크기 | 1바이트 |
이 헤더 뒤에 오는 데이터는 부호 없는 8비트 정수로 해석되는 단일 바이트입니다. 값 SIDEBANDAUDIO_CODEC_MODE_HIGH_QUALITY
은 현재 구성된 코덱이 고품질 모드에서 작동한다는 것을 나타내고, 값 SIDEBANDAUDIO_CODEC_MODE_LOW_LATENCY
은 코덱이 짧은 대기 시간 모드에서 작동한다는 것을 나타냅니다.
이 SIOP는 업데이트할 수 있습니다. 즉, 오디오 드라이버가 대기 시간 모드의 변경 내용에 대한 정보를 유지하기 위해 IOCTL_SBAUD_GET_SIOP_UPDATE 요청을 사용해야 합니다.
현재 이 SIOP는 aptX 적응 코덱이 활성화된 경우에만 사용됩니다. aptX에 대한 자세한 내용은 Qualcomm aptX 적응형 오디오를 참조 하세요.
이 항목의 나머지 부분에 대해 이 매개 변수를 코덱-대기 시간-모드-SIOP라고 합니다.
코덱 L2CAP MTU 크기(mtu-size-SIOP)
오디오 드라이버는 이 SIOP를 사용하여 현재 L2CAP MTU 크기(바이트)를 검색할 수 있습니다. 이 SIOP에 대한 SIDEBANDAUDIO_IO_PARAM_HEADER 필드는 다음과 같이 설정됩니다.
필드 | 값 |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP |
TypeId | SIDEBANDAUDIO_PARAM_A2DP_CODEC_MTU_SIZE |
크기 | 2바이트 |
이 헤더 뒤에 오는 데이터는 부호 없는 16비트 정수로 해석되는 2바이트입니다. 이 SIOP는 업데이트할 수 있으므로 오디오 드라이버가 IOCTL_SBAUD_GET_SIOP_UPDATE 요청을 사용하여 MTU 크기의 변경 내용을 계속 파악해야 합니다.
현재 이 SIOP는 aptX 적응 코덱이 활성화된 경우에만 사용됩니다. aptX에 대한 자세한 내용은 Qualcomm aptX 적응형 오디오를 참조 하세요.
이 항목의 나머지 부분에 대해 이 매개 변수를 mtu-size-SIOP라고 합니다.
공급업체 정의 SIOP 사용
오디오 드라이버는 공급업체에서 정의한 SIOP를 설정할 수 있습니다.
사이드밴드 인터페이스를 연 후 및 IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR 전에 설정된 공급업체-SIOP
A2DP 드라이버는 SIOP 값을 시스템 구성 공급업체 SIOP 컬렉션에 저장합니다. A2DP 드라이버는 IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2 처리하는 동안 이 컬렉션을 Bluetooth 컨트롤러(HCI_VS_MSFT_Avdtp_Capabilities_Configuration 사용)로 보냅니다. Bluetooth 컨트롤러에서 반환된 모든 오디오 인터페이스 매개 변수는 시스템 구성 공급업체 SIOP 컬렉션에도 저장됩니다. 오디오 드라이버는 IOCTL이 완료된 후 언제든지 이러한 값을 가져올 수 있습니다.
IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2 후 설정된 공급업체 SIOP
A2DP 드라이버는 IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2 후 오디오 드라이버에서 보낸 모든 SIOP에 실패합니다.
IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR 후와 IOCTL_SBAUD_STREAM_OPEN 전에 설정된 공급업체 SIOP
A2DP 드라이버는 스트림 구성 공급업체 SIOP 컬렉션 에 SIOP 값을 저장합니다. A2DP 드라이버는 IOCTL_SBAUD_STREAM_OPEN 처리하는 동안 이 컬렉션을 Bluetooth 컨트롤러(HCI_VS_MSFT_Avdtp_Open 사용)로 보냅니다. Bluetooth 컨트롤러에서 반환된 모든 오디오 인터페이스 매개 변수는 스트림 구성 공급업체 SIOP의 컬렉션에도 저장됩니다. 오디오 드라이버는 IOCTL이 완료된 후 언제든지 이러한 값을 가져올 수 있습니다.
A2DP 드라이버는 IOCTL_SBAUD_STREAM_CLOSE 처리할 때 스트림 구성 공급업체 SIOP의 컬렉션을 지웁니다. (시스템 구성 공급업체 SIOP의 컬렉션은 지워지지 않습니다.)
A2DP 사이드밴드 인터페이스
A2DP 사이드밴드는 제네릭 IOCTL_SBAUD_* 요청을 사용합니다. IOCTL의 전체 목록은 sidebandaudio.h 헤더를 참조하세요. 이 섹션에서는 A2DP 관련 정보를 제공합니다.
PnP 인터페이스 클래스
인터페이스 클래스는 GUID_DEVINTERFACE_A2DP_SIDEBAND_AUDIO
A2DP 사이드밴드 Bluetooth 오디오용입니다.
KS 핀 상태 전환에 사용되는 IOCTL
오디오 드라이버는 특정 KS 핀 상태 전환에서 이러한 요청을 보냅니다.
- KSSTATE_STOP 위의 첫 번째 전환에서(일반적으로 KSSTATE_ACQUIRE) IOCTL_SBAUD_STREAM_OPEN 보냅니다.
- KSSTATE_RUN 전환할 때 IOCTL_SBAUD_STREAM_START 보냅니다.
- KSSTATE_RUN 아래 전환에서 IOCTL_SBAUD_STREAM_SUSPEND 보냅니다.
- KS 핀을 닫을 때 IOCTL_SBAUD_STREAM_CLOSE 보냅니다.
A2DP 오프로드용 Microsoft 정의 Bluetooth HCI 확장
현재 정의된 확장은 Microsoft에서 정의한 Bluetooth HCI 확장을 참조하세요.
HCI_VS_MSFT_Read_Supported_Features
오디오 사이드밴드 A2DP 오프로드는 AVDTP 오프로드 명령에 대한 지원을 나타내기 위해 Supported_features 반환 매개 변수의 다른 비트를 정의하여 HCI_VS_MSFT_Read_Supported_Features 명령을 향상시킵니다. 이 비트가 집합으로 반환되면 이 섹션의 나머지 명령이 지원됩니다.
명령 및 반환 매개 변수에 대한 설명은 HCI_VS_MSFT_Read_Supported_Features 참조하세요.
Supported_features(8 옥텟) 값은 HCI_VS_MSFT_Read_Supported_Features 참조하세요. 추가 값은 컨트롤러가 AVDTP 오프로드 및 Microsoft 정의 AVDTP Bluetooth HCI 이벤트에 설명된 HCI_VS_MSFT_Avdtp_* 명령을 지원함을 나타내는 데 사용됩니다.
오디오 관련 Microsoft 정의 Bluetooth HCI 확장
Bluetooth HCI(호스트 컨트롤러 인터페이스)는 호스트와 Bluetooth 라디오 컨트롤러 간의 모든 상호 작용을 지정합니다. Bluetooth 사양을 사용하면 공급업체에서 정의한 HCI 명령 및 이벤트를 통해 호스트와 컨트롤러 간에 표준화되지 않은 상호 작용을 수행할 수 있습니다. Microsoft는 Windows에서 사용하는 공급업체별 HCI 명령 및 이벤트를 정의합니다. 다음 Microsoft 정의 HCI 명령은 오디오 사이드밴드 오프로드에 사용됩니다.
다음 AVDTP HCI 명령은 Bluetooth 항목 - Microsoft에서 정의한 AVDTP Bluetooth HCI 이벤트에 설명되어 있습니다.
HCI_VS_MSFT_Avdtp_Capabilities_Configuration
하위 명령 opcode 값: 7
오디오 전송 인터페이스를 구성하고 코덱 정보 블록 목록인 Bluetooth 컨트롤러의 코덱 기능을 반환합니다. 각 코덱 정보 블록은 지원되는 코덱 하나를 설명합니다. 자세한 내용은 HCI_VS_MSFT_Avdtp_Capabilities_Configuration 참조하세요.
HCI_VS_MSFT_Avdtp_Open
하위 명령 opcode 값: 8
컨트롤러 내에서 AVDTP 오프로드 리소스를 할당하고 구성합니다. 자세한 내용은 HCI_VS_MSFT_Avdtp__Open 참조하세요.
HCI_VS_MSFT_Avdtp_Start
하위 명령 opcode 값: 9
이 명령은 오디오 전송에서 전송된 AVDTP 미디어 패킷으로 오디오 스트리밍을 시작합니다. 자세한 내용은 HCI_VS_MSFT_Avdtp_Start 참조하세요.
HCI_VS_MSFT_Avdtp_Suspend
하위 명령 opcode 값: 0xA
HCI_VS_MSFT_Avdtp_Start 시작된 스트리밍 활동을 중지합니다. 자세한 내용은 HCI_VS_MSFT_Avdtp_Suspend 참조하세요.
HCI_VS_MSFT_Avdtp_Close
하위 명령 opcode 값: 0xB
HCI_VS_MSFT_Avdtp_Open 할당한 AVDTP 오프로드 리소스를 해제합니다. 자세한 내용은 HCI_VS_MSFT_Avdtp_Close 참조하세요.
오디오 DSP 또는 Bluetooth 컨트롤러의 Bluetooth 코덱
구현은 오디오 DSP 및/또는 Bluetooth 컨트롤러에서 호스트되는 Bluetooth 코덱을 수용합니다. 코덱-SIOP는 오디오 드라이버가 지원되는 코덱 목록을 나타내는 메커니즘을 제공합니다. 마찬가지로 HCI_VS_MS_Avdtp_Capabilities_Configuration 명령을 사용하면 Bluetooth 컨트롤러가 지원되는 코덱 목록을 반환할 수 있습니다. A2DP 드라이버와 Bluetooth 컨트롤러 중 하나 이상이 지원되는 코덱 목록을 반환해야 합니다.
A2DP 드라이버는 오디오 드라이버와 Bluetooth 컨트롤러 모두에서 지원하는 A2DP 코덱 목록을 안정적으로 교차하거나 병합할 수 없습니다. 둘 다 A2DP 지원 코덱을 반환하는 경우 Windows는 Bluetooth 전송 드라이버에서 반환된 목록만 사용합니다.
IHV 솔루션에서 오디오 DSP 및 Bluetooth 컨트롤러 기능의 코덱 관련 기능을 교차하거나 병합해야 하는 경우 오디오 드라이버는 코덱-SIOP(표준 표현이 충분한 경우) 또는 공급업체-SIOP를 통해 해당 기능을 나타낼 수 있습니다. A2DP 드라이버는 기능을 교차하고 HCI_VS_MSFT_Avdtp_Capabilities_Configuration 지원되는 코덱의 결과 집합을 반환할 수 있는 Bluetooth 컨트롤러에 SIOP를 전달합니다.
참고 항목
Microsoft에서 정의한 Bluetooth HCI 확장
오디오 드라이버에 대한 Bluetooth 바이패스 지침