오디오 엔드포인트 디바이스

엔드포인트 디바이스라는 용어는 애플리케이션 프로그램에서 시작되거나 종료되는 데이터 경로의 한쪽 끝에 있는 하드웨어 디바이스를 나타냅니다. 오디오 엔드포인트 디바이스의 예로는 스피커, 헤드폰, 마이크 및 CD 플레이어가 있습니다. 데이터 경로를 따라 이동하는 오디오 데이터는 애플리케이션과 엔드포인트 디바이스 간에 이동하는 동안 여러 소프트웨어 및 하드웨어 구성 요소를 트래버스할 수 있습니다. 이러한 구성 요소는 엔드포인트 디바이스의 작동에 필수적이지만 사용자에게 보이지 않는 경향이 있습니다. 사용자는 엔드포인트 디바이스가 이러한 어댑터와 오가는 오디오 스트림을 처리하는 소프트웨어 구성 요소에 연결하거나 연결하는 오디오 어댑터의 디바이스 측면에서가 아니라 직접 조작하는 엔드포인트 디바이스의 관점에서 생각할 가능성이 더 높습니다.

엔드포인트 디바이스와의 혼동을 방지하기 위해 이 설명서는 오디오 어댑터의 디바이스를 어댑터 디바이스로 참조합니다.

다음 다이어그램은 오디오 엔드포인트 디바이스와 어댑터 디바이스의 차이점을 보여 주는 다이어그램입니다.

examples of audio endpoint devices and adapter devices

앞의 다이어그램에서 엔드포인트 디바이스의 예는 다음과 같습니다.

  • 스피커
  • 마이크
  • 보조 입력 디바이스

다음은 어댑터 디바이스의 예입니다.

  • 웨이브 출력 디바이스(디지털-아날로그 변환기 포함)
  • 출력 컨트롤 디바이스(볼륨 및 음소거 컨트롤 포함)
  • 웨이브 입력 디바이스(아날로그-디지털 변환기 포함)
  • 입력 컨트롤 디바이스(볼륨 제어 및 멀티플렉서 포함)

일반적으로 오디오 애플리케이션의 사용자 인터페이스는 어댑터 디바이스가 아닌 오디오 엔드포인트 디바이스를 참조합니다. Windows Vista는 엔드포인트 디바이스 추상화를 직접 지원하여 사용자에게 친숙한 애플리케이션의 디자인을 간소화합니다.

일부 엔드포인트 디바이스는 어댑터 디바이스에 영구적으로 연결할 수 있습니다. 예를 들어 컴퓨터에는 CD 플레이어, 마이크 또는 시스템 섀시에 통합된 스피커와 같은 내부 디바이스가 포함될 수 있습니다. 일반적으로 사용자는 이러한 엔드포인트 디바이스를 물리적으로 제거하지 않습니다.

다른 엔드포인트 디바이스는 오디오 잭을 통해 오디오 어댑터에 연결할 수 있습니다. 사용자는 이러한 외부 디바이스를 연결하고 분리합니다. 예를 들어 외부 마이크 또는 헤드폰과 같은 오디오 엔드포인트 디바이스는 케이블의 한쪽 끝에 있으며 다른 끝은 어댑터 디바이스의 잭에 연결됩니다.

어댑터는 시스템 버스(일반적으로 PCI 또는 PCI Express) 또는 플러그 앤 플레이(PnP)를 지원하는 외부 버스(USB 또는 IEEE 1394)를 통해 시스템 프로세서와 통신합니다. 디바이스 열거 중에 플러그 앤 플레이 관리자는 오디오 어댑터의 디바이스를 식별하고 해당 디바이스를 등록하여 운영 체제 및 애플리케이션에서 사용할 수 있도록 합니다.

어댑터와 USB 또는 IEEE 1394 버스와 같은 외부 버스 간의 연결과 달리 엔드포인트 디바이스와 어댑터 디바이스 간의 연결은 PnP 디바이스 검색을 지원하지 않습니다. 그러나 일부 오디오 어댑터는 잭 프레즌스 검색을 지원합니다. 플러그를 잭에 삽입하거나 잭에서 제거하면 하드웨어는 어댑터 드라이버에 하드웨어 구성 변경 사항을 알리는 인터럽트를 생성합니다. Windows Vista의 엔드포인트 관리자는 이 하드웨어 기능을 활용하여 언제든지 어떤 엔드포인트 디바이스가 있는지 애플리케이션에 알릴 수 있습니다. 이러한 방식으로 엔드포인트 관리자의 작업은 시스템에 있는 어댑터 디바이스를 추적하는 플러그 앤 플레이 관리자의 작업과 유사합니다.

Windows Vista에서 오디오 시스템은 엔드포인트 디바이스와 어댑터 디바이스를 모두 추적합니다. 엔드포인트 관리자는 엔드포인트 디바이스를 등록하고 플러그 앤 플레이 관리자는 어댑터 디바이스를 등록합니다. 엔드포인트 디바이스를 등록하면 사용자가 컴퓨터 섀시 내에 숨겨질 수 있는 어댑터 디바이스를 참조하는 대신 사용자가 직접 조작하는 엔드포인트 디바이스를 참조할 수 있도록 사용자 친화적인 애플리케이션이 더 쉽게 사용할 수 있습니다. 운영 체제에서 보고하는 엔드포인트 디바이스는 잭 프레즌스 검색이 있는 오디오 하드웨어의 구성에서 동적 변경 내용을 충실하게 추적합니다. 엔드포인트 디바이스가 연결된 상태로 유지되는 동안 시스템은 해당 디바이스를 열거합니다. 사용자가 엔드포인트 디바이스를 분리하면 시스템에서 해당 디바이스를 열거하지 않습니다.

Windows 98, Windows Me, Windows 2000 및 Windows XP를 포함한 이전 버전의 Windows 시스템에서는 PnP 디바이스만 애플리케이션에 명시적으로 제공합니다. 따라서 애플리케이션은 엔드포인트 디바이스의 존재를 유추해야 합니다. 엔드포인트 디바이스에 대한 명시적 지원이 부족한 운영 체제는 클라이언트 애플리케이션이 더 많은 작업을 스스로 수행하도록 합니다. 예를 들어 오디오 캡처 애플리케이션은 외부 마이크에서 캡처를 사용하도록 설정하려면 다음 단계를 수행해야 합니다.

  1. 이전에 PnP 관리자가 등록한 모든 오디오 캡처 디바이스(어댑터 디바이스)를 열거합니다.
  2. 캡처 디바이스를 선택한 후 waveInOpen 함수를 호출하거나 DirectSoundCapture 또는 DirectShow API를 사용하여 디바이스에서 캡처 스트림을 엽니다.
  3. mixerOpen 함수를 호출하고 다른 mixerXxx 함수를 사용하여 2단계에서 연 캡처 디바이스에 해당하는 MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE 줄을 찾습니다. 이것은 교육된 추측입니다.
  4. 마이크에서 데이터 경로 차단을 해제합니다. 데이터 경로에 음소거 노드가 포함된 경우 클라이언트는 마이크에서 신호 음소거를 사용하지 않도록 설정해야 합니다. 캡처 디바이스에 여러 입력 중에서 선택할 수 있는 멀티플렉서가 포함된 경우 클라이언트는 마이크 입력을 선택해야 합니다.

디자이너가 예상하지 못했거나 테스트되지 않은 하드웨어 구성이 발견되면 이러한 작업을 수행하는 소프트웨어가 실패할 수 있으므로 이 프로세스는 오류가 발생하기 쉽습니다.

엔드포인트 디바이스를 지원하는 Windows Vista에서는 동일한 엔드포인트 디바이스에 연결하는 프로세스가 훨씬 간단합니다.

  1. 엔드포인트 디바이스 컬렉션에서 마이크를 선택합니다.
  2. 해당 마이크에서 오디오 캡처 인터페이스를 활성화합니다.

운영 체제는 엔드포인트 디바이스를 식별하고 사용하도록 설정하는 데 필요한 모든 작업을 수행합니다. 예를 들어 마이크의 데이터 경로에 멀티플렉서가 포함된 경우 시스템은 멀티플렉서에 대한 마이크 입력을 자동으로 선택합니다.

자체 엔드포인트 식별 알고리즘을 구현하는 대신 애플리케이션이 엔드포인트 디바이스를 식별하는 작업을 운영 체제에 위임할 수 있는 경우 오디오 하위 시스템의 동작은 더 안정적이고 결정적입니다. 소프트웨어 공급업체는 더 이상 엔드포인트 식별 알고리즘이 사용 가능한 모든 오디오 하드웨어 디바이스 및 구성에서 제대로 작동하는지 확인할 필요가 없습니다. 엔드포인트 식별을 위해 운영 체제에만 의존할 수 있습니다. 마찬가지로, 하드웨어 공급업체는 더 이상 모든 관련 클라이언트 애플리케이션이 오디오 어댑터에 연결된 모든 엔드포인트 디바이스를 쉽게 식별할 수 있는지 확인할 필요가 없습니다. 운영 체제에서 오디오 어댑터에 연결된 엔드포인트 디바이스를 식별할 수 있는지만 확인해야 합니다.

다음 항목에서는 오디오 엔드포인트 디바이스에 대한 추가 정보를 제공합니다.

프로그래밍 가이드