Windows 10: 오디오 드라이버의 새로운 기능
이 항목에서는 Windows 10용 오디오의 새로운 기능을 개략적으로 요약합니다.
기능 요약
Windows 10의 새로운 오디오 기능은 다음과 같습니다.
짧은 대기 시간 오디오 개선
오디오 대기 시간은 소리가 생성되는 시간과 소리가 들리는 시간 사이의 지연입니다. 오디오 대기 시간이 짧으면 다음과 같은 몇 가지 주요 시나리오에서 매우 중요합니다.
- Pro 오디오
- 음악 만들기 및 혼합
- Skype와 같은 통신
- 가상 및 증강 현실
- 게임
디바이스의 총 대기 시간은 다음 구성 요소의 대기 시간의 합계입니다.
- 운영 체제
- 오디오 처리 개체
- 오디오 드라이버
- 오디오 하드웨어
Windows 10에서는 OS의 대기 시간을 줄이기 위한 작업이 수행되었습니다. 드라이버를 변경하지 않으면 Windows 10의 애플리케이션에서 대기 시간이 4.5~16ms 감소합니다. 또한 작은 버퍼를 사용하여 오디오 데이터를 처리하는 새로운 짧은 대기 시간 DDI를 활용하도록 드라이버가 업데이트된 경우 대기 시간이 훨씬 더 줄어듭니다. 드라이버가 3ms 오디오 버퍼를 지원하는 경우 왕복 대기 시간은 ~10ms입니다.
오디오 스택은 사용자의 시나리오에 따라 대기 시간과 전원 간의 절충을 최적화하기 위해 여러 패킷 크기 및 동적 패킷 크기 조정을 지원합니다. 또한 우선 순위가 높은 스트림(예: 전화 통화)에 전용 리소스가 있는지 확인하기 위해 스트림의 우선 순위가 지정됩니다.
오디오 드라이버가 짧은 대기 시간을 지원하기 위해 Windows 10은 다음과 같은 3가지 새로운 기능을 제공합니다.
- [필수] 각 모드에서 지원되는 최소 버퍼 크기를 선언합니다.
- [선택 사항이지만 권장됨] 드라이버와 OS 간의 데이터 흐름 조정을 개선합니다.
- [선택 사항이지만 권장됨] 짧은 대기 시간 시나리오에서 OS에 의해 보호될 수 있도록 드라이버 리소스(인터럽트, 스레드)를 등록합니다. 자세한 내용은 짧은 대기 시간 오디오를 참조 하세요.
신호 처리 모드 및 오디오 범주
신호 처리 모드
드라이버는 각 디바이스에 대해 지원되는 오디오 신호 처리 모드를 선언합니다.
오디오 범주(애플리케이션에서 선택됨)는 오디오 모드(드라이버에 의해 정의됨)에 매핑됩니다. Windows는 7개의 오디오 신호 처리 모드를 정의합니다. OEM 및 IHV는 구현하려는 모드를 결정할 수 있습니다. 모드는 아래 표에 요약되어 있습니다.
모드 | 렌더링/캡처 | 설명 |
---|---|---|
Raw | 모두 | 원시 모드는 스트림에 적용된 신호 처리가 없도록 지정합니다. 애플리케이션은 완전히 손길이 닿지 않은 원시 스트림을 요청하고 자체 신호 처리를 수행할 수 있습니다. |
기본값 | 모두 | 이 모드는 기본 오디오 처리를 정의합니다. |
영화* | 렌더링 | 동영상 오디오 재생 |
미디어* | 모두 | 오디오 재생 음악(대부분의 미디어 스트림의 경우 기본값) |
음성* | 캡처 | 사용자 음성 캡처(예: Cortana에 대한 입력) |
통신* | 모두 | VOIP 렌더링 및 캡처(예: Skype, Lync) |
알림* | 렌더링 | 벨소리, 경보, 경고 등 |
오디오 디바이스 드라이버는 적어도 원시 또는 기본 모드를 지원해야 합니다. 추가 모드 지원은 선택 사항입니다.
음성, 영화, 음악 및 통신을 위한 전용 모드입니다. 오디오 드라이버는 스트림 유형에 따라 다양한 유형의 오디오 형식 및 처리를 정의할 수 있습니다.
오디오 범주
다음 표에서는 Windows 10의 오디오 범주를 보여 줍니다.
오디오 스트림의 사용에 대해 시스템에 알리기 위해 애플리케이션에는 특정 오디오 스트림 범주를 사용하여 스트림에 태그를 지정하는 옵션이 있습니다. Windows 10에는 9개의 오디오 스트림 범주가 있습니다.
범주 | 설명 |
---|---|
영화* | 동영상, 대화 상자가 있는 비디오(ForegroundOnlyMedia 대체) |
미디어* | 미디어 재생의 기본 범주(BackgroundCapableMedia 대체) |
게임 채팅* | 사용자 간의 게임 내 통신(Windows 10의 새 범주) |
음성* | 음성 입력(예: 개인 도우미) 및 출력(예: 탐색 앱)(Windows 10의 새 범주) |
연락 | VOIP, 실시간 채팅 |
경고 | 알람, 벨소리, 알림 |
음향 효과 | 경고음, 딩 등 |
게임 미디어 | 게임 음악에서 |
게임 효과 | 공 튀는, 자동차 엔진 소리, 총알, 등. |
기타 | 분류되지 않은 스트림 |
* Windows 10의 새로운 기능
자세한 내용은 오디오 신호 처리 모드 및 오디오 처리 개체 아키텍처를 참조하세요.
하드웨어 오프로드된 APO 효과
Windows 10은 하드웨어 오프로드된 APO 효과를 지원합니다. API는 오프로드 핀 위에 로드할 수 있습니다. 이렇게 하면 소프트웨어와 하드웨어 모두에서 오디오 처리를 수행할 수 있습니다. 또한 처리는 동적으로 변경 될 수 있습니다. 충분한 하드웨어 리소스가 있는 경우 일부 또는 모든 처리를 소프트웨어 APO에서 DSP로 이동한 다음 DSP의 부하가 증가할 때 소프트웨어 APO로 다시 이동할 수 있습니다.
자세한 내용은 하드웨어 오프로드된 APO 효과 구현을 참조 하세요.
Cortana 음성 활성화 - 음성에서 절전 모드 해제
개인 도우미 기술인 Cortana는 2013년 Microsoft BUILD 개발자 컨퍼런스에서 처음 시연되었습니다. 음성 활성화는 사용자가 특정 문구인 "Hey Cortana"를 말함으로써 다양한 디바이스 전원 상태에서 음성 인식 엔진을 호출할 수 있게 해주는 기능입니다. VA("안 함 Cortana" 음성 활성화) 기능을 사용하면 사용자가 자신의 음성을 사용하여 활성 컨텍스트(즉, 현재 화면에 있는 항목)를 벗어나는 환경(예: Cortana)을 빠르게 참여할 수 있습니다. 이 기능은 화면이 꺼져 있거나 유휴 상태이거나 완전히 활성화된 시나리오를 대상으로 합니다. 하드웨어에서 버퍼링을 지원하는 경우 사용자는 핵심 구와 명령 구를 함께 연결할 수 있습니다. 이렇게 하면 사용자의 음성 환경에서 종단 간 절전 모드 해제가 향상됩니다. 자세한 내용은 음성 활성화를 참조 하세요.
오디오용 Windows 유니버설 드라이버
Windows 10은 PC에서 작동하는 하나의 드라이버 모델과 휴대폰 및 소형 화면 태블릿의 경우 2:1 및 Windows 10을 지원합니다. 즉, IHV는 하나의 플랫폼에서 드라이버를 개발할 수 있으며 해당 드라이버는 모든 장치(데스크톱, 노트북, 태블릿, 휴대폰)에서 작동합니다. 그 결과 개발 시간과 비용이 줄어듭니다.
유니버설 오디오 드라이버를 개발하려면 다음 도구를 사용합니다.
- Visual Studio 2015: 새 드라이버 설정을 사용하면 "대상 플랫폼"을 "유니버설"로 설정하여 다중 플랫폼 드라이버를 만들 수 있습니다.
- APIValidator: 드라이버가 범용인지 여부를 검사 업데이트해야 하는 호출을 강조 표시하는 WDK 도구입니다.
- GitHub의 오디오 샘플: sysvad 및 SwapAPO가 유니버설 드라이버로 변환되었습니다. GitHub 샘플 코드에 대한 자세한 내용 및 포인터는 유니버설 Windows Drivers for Audio를 참조 하세요.
오디오 드라이버에 대한 리소스 관리
저렴한 모바일 장치에서 좋은 오디오 환경을 만드는 한 가지 과제는 일부 디바이스에 다양한 동시성 제약 조건이 있다는 것입니다. 예를 들어 디바이스는 최대 6개의 오디오 스트림만 동시에 재생할 수 있으며 2개의 오프로드 스트림만 지원할 수 있습니다. 모바일 디바이스에서 활성 전화 통화가 있는 경우 디바이스가 2개의 오디오 스트림만 지원할 수 있습니다. 디바이스가 오디오를 캡처하는 경우 디바이스는 최대 4개의 오디오 스트림만 재생할 수 있습니다.
Windows 10에는 우선 순위가 높은 오디오 스트림 및 휴대폰 통화를 재생할 수 있도록 동시성 제약 조건을 표현하는 메커니즘이 포함되어 있습니다. 시스템에 충분한 리소스가 없으면 우선 순위가 낮은 스트림이 종료됩니다. 이 메커니즘은 데스크톱이나 노트북이 아닌 휴대폰 및 태블릿에서만 사용할 수 있습니다.
자세한 내용은 오디오 하드웨어 리소스 관리를 참조하세요.
오디오 드라이버에 대한 PNP 리밸런스
PNP 리밸런싱은 메모리 리소스를 다시 할당해야 하는 특정 PCI 시나리오에서 사용됩니다. 이 경우 일부 드라이버는 여유 연속 메모리 공간을 만들기 위해 언로드된 다음 다른 메모리 위치에서 다시 로드됩니다. 두 가지 기본 시나리오에서 재균형을 트리거할 수 있습니다.
- PCI 핫플러그: 사용자가 디바이스에 연결하고 PCI 버스에 새 디바이스에 대한 드라이버를 로드하기에 충분한 리소스가 없습니다. 이 범주에 속하는 디바이스의 몇 가지 예로는 Thunderbolt, USB-C 및 NVME Storage가 있습니다. 이 시나리오에서는 추가되는 추가 디바이스를 지원하기 위해 메모리 리소스를 다시 정렬하고 통합(재조정)해야 합니다.
- PCI 크기 조정 가능한 BAR: 디바이스에 대한 드라이버가 메모리에 성공적으로 로드되면 추가 리소스를 요청합니다. 디바이스의 몇 가지 예로는 고급 그래픽 카드 및 스토리지 디바이스가 있습니다. 자세한 내용은 PortCls 오디오 드라이버에 대한 PnP 리밸런스 구현을 참조 하세요.