다음을 통해 공유


DSSPEAKER_SURROUND Speaker 구성

참고 이 정보는 Windows XP 및 이전 운영 체제에 적용됩니다. Windows Vista부터 IDirectSound::GetSpeakerConfigIDirectSound::SetSpeakerConfig 는 더 이상 사용되지 않습니다.

애플리케이션 프로그램은 스피커 구성 매개 변수가 DSSPEAKER_SURROUND 설정된 IDirectSound::SetSpeakerConfig 메서드를 호출하여 DirectSound 스피커 구성을 서라운드 모드로 변경할 수 있습니다. 이는 채널이 왼쪽, 오른쪽, 가운데 및 후방 스피커에 매핑되는 4개 채널 PCM 형식을 지정합니다.

적용되면 DSSPEAKER_SURROUND 스피커 구성 설정은 전역이며 오디오 디바이스 전체에 영향을 줍니다. 이후에 실행되는 모든 오디오 애플리케이션에는 DirectSound가 설정을 다시 변경할 때까지 새 설정이 적용됩니다.

DirectSound는 다음 알고리즘을 사용하여 서라운드 모드에 대한 오디오 시스템을 구성합니다.

  1. DirectSound는 먼저 드라이버의 DAC 노드(또는 DAC 노드가 없는 경우 3D 노드)에 KSPROPERTY_AUDIO_CHANNEL_CONFIG set-property 요청을 전송하여 드라이버에 서라운드 스피커 모드로 전환하도록 요청합니다. ( KSNODETYPE_DACKSNODETYPE_3D_EFFECTS 참조하세요.) 이 속성 요청과 함께 제공되는 KSAUDIO_CHANNEL_CONFIG 구조체는 KSAUDIO_SPEAKER_SURROUND 스피커 구성을 지정합니다. 요청이 성공하면 오디오 장치는 4개의 채널을 왼쪽, 오른쪽, 가운데 및 후방 스피커에 직접 연결된 4개의 아날로그 출력으로 라우팅합니다.

  2. 오류가 발생하면 DirectSound는 드라이버에 스테레오 스피커 모드로 디바이스를 구성하고 디바이스가 있는 경우 해당 KSNODETYPE_PROLOGIC_ENCODER 노드를 사용하도록 요청합니다. 이 경우 디바이스는 애플리케이션에서 4채널 스트림을 디지털 또는 아날로그 형식으로 출력하는 서라운드 인코딩 스테레오 신호로 변환합니다. (하드웨어는 디바이스의 다양한 믹서 핀으로 흐르는 스트림을 혼합한 후 인코딩을 수행해야 합니다.) 사용자는 디바이스의 스테레오 출력을 외부 디코더에 연결하여 인코딩된 신호를 왼쪽, 오른쪽, 가운데 및 후방 스피커로 출력되는 4개의 채널로 변환할 수 있습니다.

  3. 실패하면 DirectSound는 KMixer에서 KSNODETYPE_PROLOGIC_ENCODER 노드를 사용하도록 설정합니다. (디바이스가 이전 단계의 스테레오 모드에 이미 있습니다.) 다시 말하지만, 디바이스에서 출력되는 스테레오 신호는 외부 디코더에 공급될 수 있습니다.

이 알고리즘이 성공하면 애플리케이션에서 4개 채널 PCM 버퍼를 만들고 재생할 수 있습니다. 위의 1과 2의 경우 디바이스에서 읽는 하드웨어 버퍼는 4개의 채널을 사용하지만 3의 경우 하드웨어 버퍼는 스테레오 형식을 사용합니다. 애플리케이션은 1과 2의 경우 하드웨어 버퍼에 직접 쓸 수 있지만, 3의 경우 소프트웨어 버퍼에 쓰고 KMixer가 애플리케이션의 4채널 스트림을 하드웨어 버퍼에 필요한 서라운드 인코딩 스테레오 형식으로 변환할 수 있도록 해야 합니다.

위의 경우(3) 애플리케이션은 출력 스트림에 하드웨어 버퍼를 사용하지 않아야 합니다. KMixer는 혼합을 인코딩하기 전에 모든 입력 스트림을 혼합하여 서라운드 스테레오 스트림을 생성합니다. 그러나 하드웨어 믹서 핀에 들어가는 모든 스트림은 KMixer의 인코딩된 스테레오와 하드웨어에 혼합되어 디코딩될 때 서라운드 오디오의 품질을 저하합니다. 애플리케이션은 소프트웨어 버퍼만 사용하여 이를 방지할 수 있습니다.

KSNODETYPE_PROLOGIC_ENCODER 노드에 의해 서라운드 인코딩된 스테레오 스트림은 KSNODETYPE_PROLOGIC_DECODER 노드에서 4개의 채널(왼쪽, 오른쪽, 가운데 및 뒤로)으로 디코딩할 수 있습니다.