다음을 통해 공유


IAudioClient::GetMixFormat 메서드(audioclient.h)

GetMixFormat 메서드는 오디오 엔진이 공유 모드 스트림의 내부 처리에 사용하는 스트림 형식을 검색합니다.

구문

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

매개 변수

[out] ppDeviceFormat

메서드가 혼합 형식의 주소를 쓰는 포인터 변수에 대한 포인터입니다. 이 매개 변수는 포인터 변수에 대한 유효한 NULL 이 아닌 포인터여야 합니다. 메서드는 WAVEFORMATEX(또는 WAVEFORMATEXTENSIBLE) 구조체의 주소를 이 변수에 씁니다. 메서드는 구조체에 대한 스토리지를 할당합니다. 호출자는 더 이상 필요하지 않은 경우 CoTaskMemFree 함수를 호출하여 스토리지를 해제할 책임이 있습니다. GetMixFormat 호출이 실패하면 *ppDeviceFormatNULL입니다. WAVEFORMATEX, WAVEFORMATEXTENSIBLECoTaskMemFree에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.

반환 값

메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드에는 다음 표에 표시된 값이 포함되지만 이에 국한되지는 않습니다.

반환 코드 설명
AUDCLNT_E_DEVICE_INVALIDATED
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다.
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 오디오 서비스가 실행되고 있지 않습니다.
E_POINTER
매개 변수 ppDeviceFormatNULL입니다.
E_OUTOFMEMORY
메모리가 부족합니다.

설명

클라이언트는 IAudioClient::Initialize 메서드를 호출하기 전에 이 메서드를 호출할 수 있습니다. 오디오 엔드포인트 디바이스에 대한 공유 모드 스트림을 만들 때 Initialize 메서드는 항상 동일한 디바이스의 GetMixFormat 호출에서 가져온 스트림 형식을 수락합니다.

혼합 형식은 오디오 엔진이 공유 모드 스트림의 디지털 처리를 위해 내부적으로 사용하는 형식입니다. 이 형식이 반드시 오디오 엔드포인트 디바이스에서 지원하는 형식은 아닙니다. 따라서 호출자는 GetMixFormat을 호출하여 얻은 형식으로 배타적 모드 스트림을 만드는 데 성공하지 못할 수 있습니다.

예를 들어 디지털 오디오 처리를 용이하게 하기 위해 오디오 엔진은 샘플을 부동 소수점 값으로 나타내는 혼합 형식을 사용할 수 있습니다. 디바이스가 정수 PCM 샘플만 지원하는 경우 엔진은 디바이스와 엔진 간의 연결에서 정수 PCM 값으로 또는 정수 PCM 값으로 샘플을 변환합니다. 그러나 다시 샘플링을 방지하기 위해 엔진은 디바이스에서 지원하는 샘플 속도와 혼합 형식을 사용할 수 있습니다.

Initialize 메서드가 특정 형식의 공유 모드 또는 단독 모드 스트림을 만들 수 있는지 여부를 확인하려면 IAudioClient::IsFormatSupported 메서드를 호출합니다.

WAVEFORMATEX 구조체는 그 자체로 채널과 화자 위치의 매핑을 지정할 수 없습니다. 또한 WAVEFORMATEX 는 각 오디오 샘플에 대한 컨테이너 크기를 지정하지만 샘플에서 전체 자릿수의 비트 수를 지정할 수 없습니다(예: 24비트 컨테이너의 정밀도 20비트). 그러나 WAVEFORMATEXTENSIBLE 구조체는 스피커에 대한 채널 매핑과 각 샘플의 전체 자릿수 비트를 모두 지정할 수 있습니다. 이러한 이유로 GetMixFormat 메서드는 독립 실행형 WAVEFORMATEX 구조체 대신 WAVEFORMATEXTENSIBLE 구조체 형식의 형식 설명자를 검색합니다. ppDeviceFormat 매개 변수를 통해 메서드는 이 WAVEFORMATEXTENSIBLE 구조체의 시작 부분에 포함된 WAVEFORMATEX 구조체에 대한 포인터를 출력합니다. WAVEFORMATEX 및WAVEFORMATEXTENSIBLE에 대한 자세한 내용은 Windows DDK 설명서를 참조하세요.

GetMixFormat 메서드에 대한 자세한 내용은 디바이스 형식을 참조하세요. GetMixFormat을 호출하는 코드 예제는 다음 topics 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 audioclient.h

추가 정보

IAudioClient 인터페이스

IAudioClient::Initialize

IAudioClient::IsFormatSupported