다음을 통해 공유


오디오 상태 지원

개요

디바이스는 다른 자세로 사용할 수 있습니다. 태블릿의 경우 자세는 기본적으로 세로 또는 가로와 같이 유지되는 방향을 의미합니다. 이러한 디바이스에 대한 오디오 환경은 특정 자세에 맞게 최적화할 수 있습니다. 예를 들어 오디오 엔드포인트는 다른 방향으로 적절한 스테레오 환경을 위해 왼쪽/오른쪽 채널을 다시 매핑할 수 있습니다. 또한 자세 변경 시 변경된 스피커/마이크 위치에 따라 노이즈 억제, 에코 취소 등을 위해 마이크를 보정할 수도 있습니다.

Windows OS 지원

오디오 상태는 Windows 11 버전 22000 이상에서 지원됩니다.

아키텍처

오디오 엔드포인트에 대한 자세 관련 시나리오는 자세 변경에 대한 셸 응답을 기반으로 합니다. Shell은 센서 및 사용자 입력(예: 방향 잠금)과 함께 작동하여 전체 시스템 상태를 확인합니다. OS 오디오 스택은 Shell에서 자세 알림을 받고 오디오 상태 DDI를 지원하는 오디오 엔드포인트에 알릴 수 있습니다.

오디오 스택은 자세 변경에 대한 응답으로 오디오 스트림 콘텐츠를 변경하지 않습니다. 대신 오디오 스택은 오디오 드라이버에 이러한 변경 내용을 알릴 수 있습니다. IHV 오디오 구성 요소가 DSP(하드웨어) 또는 소프트웨어 APO로 구현된 신호 처리를 통해 이러한 변경에 적응할 것으로 기대됩니다.

데스크톱 PC의 경우 오디오 엔드포인트에 대한 자세 관련 시나리오가 디스플레이와 일치합니다. OS 오디오 스택은 디스플레이에서 자세 알림을 받고 오디오 상태 DDI를 지원하는 오디오 엔드포인트에 알릴 수 있습니다.

다음 다이어그램은 오디오 디바이스의 상태 변경 처리와 관련된 구성 요소 간의 관계 및 제어 흐름을 보여 줍니다.

오디오 디바이스의 상태 변경을 처리하는 OS 셸, OS 오디오, APO, PortCls 및 오디오 드라이버 간의 관계를 보여 주는 다이어그램

구성 요소

OS 셸 및 센서

셸은 센서 드라이버에서 제공하는 다양한 센서 정보를 모니터링합니다. 셸은 센서 정보와 함께 방향 잠금 및 앱 재정의와 같은 사용자 기본 설정을 고려하여 시스템 상태를 확인합니다.

OS 오디오 스택

OS 오디오 스택은 셸에서 자세 정보를 받습니다. 시스템 상태 변경이 발생하면 오디오 스택은 KS 속성을 사용하여 자세 인식 오디오 엔드포인트에 알릴 수 있습니다.

IHV 오디오 드라이버 및 APO

선택적 APO와 함께 IHV 오디오 드라이버는 OS 오디오 스택의 자세 변경을 처리합니다. 자세 변경의 영향을 받는 컴퓨터의 기본 섀시에 직접 있는 온보딩 오디오 장치만 자세에 대한 지원을 나타내야 합니다.

오디오 엔드포인트 지원 요구 사항

다음 표에서는 자세 지원을 제공해야 하고 제공하지 않아야 하는 오디오 엔드포인트 유형을 보여 주세요.

오디오 엔드포인트 유형 자세 지원
Built-In 스피커 Yes
마이크/마이크 배열 Built-In Yes
Wired-Headset No
HDMI/DisplayPort No
외부 USB 오디오 No
Bluetooth 오디오 No

오디오 드라이버 요구 사항

자세 정보는 방향의 형태로 IHV 오디오 드라이버에 제공됩니다. IHV 오디오 드라이버는 디바이스 폼 팩터에 대한 암시적 지식이 있어야 하며 기본 방향과 상대 스피커/마이크 위치를 식별할 수 있어야 합니다. 이 정보는 ACPI 또는 다른 IHV 메커니즘에서 검색할 수 있습니다.

데이터 구조 및 상수

PROPSETID

KS 속성 집합 ID에 사용되는 GUID입니다.

KSPROPSETID_AudioPosture =A3FB7B0D-474E-4F51-A379-51282DD4FA8F

속성 ID

KSPROPERTY ID에 사용되는 값입니다.

KSPROPERTY_AUDIOPOSTURE_ORIENTATION = 1

속성 설명 - AUDIOPOSTURE_ORIENTATION

이 속성은 시스템의 현재 방향을 지정합니다. 방향은 기본 방향에서 회전 각도로 표시됩니다. 방향 정보는 사용자/앱 방향 잠금을 포함하는 OS 셸과 동기화됩니다. 오디오 드라이버는 KSPROPERTY_AUDIOPOSTURE_ORIENTATION 대한 Set 속성 요청을 처리할 때 이 열거형을 받습니다.

typedef enum
{
    AUDIOPOSTURE_PANEL_ORIENTATION_NOTROTATED = 0,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE,
    AUDIOPOSTURE_PANEL_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE,
} AUDIOPOSTURE_ORIENTATION;

자세한 내용은 AUDIOPOSTURE_ORIENTATION 열거형을 참조하세요.

속성 처리

오디오 드라이버는 필터 핸들을 통해 액세스되는 핀 단위 속성으로 KSPROPERTY_AUDIOPOSTURE_ORIENTATION KSPROPSETID_AudioPosture 구현해야 합니다. 속성은 브리지 핀, 즉 엔드포인트에 대해 하드웨어 엔드포인트를 나타내는 핀에서 지원되어야 합니다.

기본 지원 – KSPROPERTY_TYPE_BASICSUPPORT

오디오 드라이버는 설정 및 액세스 플래그에 대한 지원을 반환해야 합니다.

SET – KSPROPERTY_TYPE_SET

오디오 드라이버는 속성 요청 값 매개 변수로 AUDIOPOSTURE_ORIENTATION 대한 포인터를 받습니다. 이 속성 요청에 대한 응답으로 오디오 드라이버는 새 상태의 필요한 하드웨어 또는 소프트웨어 변경 내용을 적용할 수 있습니다. 성공 반환은 드라이버가 변경 내용 처리를 완료했음을 나타냅니다. IHV APO가 오디오 드라이버에서 자세 정보를 수신해야 하는 경우 오디오 모듈을 사용하여 알림 메커니즘을 제공할 수 있습니다. 드라이버는 저전력/최대 절전 모드에서 나올 때 적용할 수 있도록 값을 캐시해야 합니다.

AUDIOPOSTURE_ORIENTATION Orientation = *((AUDIOPOSTURE_ORIENTATION*)PropertyRequest->Value);

switch (Orientation)
{
    case AUDIOPOSTURE_ORIENTATION_NOTROTATED:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED90DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED180DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
    case AUDIOPOSTURE_ORIENTATION_ROTATED270DEGREESCOUNTERCLOCKWISE:
    //Cache and process the orientation
    .
    .
}

추가 정보

WDM(Windows 드라이버 모델)

오디오 드라이버 개요