IAudioClient::IsFormatSupported 메서드(audioclient.h)
IsFormatSupported 메서드는 오디오 엔드포인트 디바이스가 특정 스트림 형식을 지원하는지 여부를 나타냅니다.
구문
HRESULT IsFormatSupported(
[in] AUDCLNT_SHAREMODE ShareMode,
[in] const WAVEFORMATEX *pFormat,
[out] WAVEFORMATEX **ppClosestMatch
);
매개 변수
[in] ShareMode
스트림 형식의 공유 모드입니다. 이 매개 변수를 통해 클라이언트는 배타적 모드 또는 공유 모드에서 지정된 형식을 사용할지 여부를 나타냅니다. 클라이언트는 이 매개 변수를 다음 AUDCLNT_SHAREMODE 열거형 값 중 하나로 설정해야 합니다.
AUDCLNT_SHAREMODE_EXCLUSIVE
AUDCLNT_SHAREMODE_SHARED
[in] pFormat
지정된 스트림 형식에 대한 포인터입니다. 이 매개 변수는 WAVEFORMATEX 또는 WAVEFORMATEXTENSIBLE 형식의 호출자가 할당한 형식 설명자를 가리킵니 다. 클라이언트는 이 메서드를 호출하기 전에 이 구조체에 형식 설명을 씁니다. WAVEFORMATEX 및 WAVEFORMATEXTENSIBLE에 대한 자세한 내용은 Windows DDK 설명서를 참조하세요.
[out] ppClosestMatch
메서드가 WAVEFORMATEX 또는 WAVEFORMATEXTENSIBLE 구조 체의 주소를 쓰는 포인터 변수에 대한 포인터입니다. 이 구조체는 pFormat 매개 변수를 통해 클라이언트가 지정한 형식에 가장 가까운 지원되는 형식을 지정합니다. 공유 모드(즉, ShareMode 매개 변수가 AUDCLNT_SHAREMODE_SHARED 경우)의 경우 ppClosestMatch 를 NULL 이 아닌 유효한 포인터 변수를 가리키도록 설정합니다. 단독 모드의 경우 ppClosestMatch 를 NULL로 설정합니다. 메서드는 구조체에 대한 스토리지를 할당합니다. 호출자는 더 이상 필요하지 않은 경우 CoTaskMemFree 함수를 호출하여 스토리지를 해제할 책임이 있습니다. IsFormatSupported 호출이 실패하고 ppClosestMatch가 NULL이 아닌 경우 메서드는 *ppClosestMatch를 NULL로 설정합니다. CoTaskMemFree에 대한 자세한 내용은 Windows SDK 설명서를 참조하세요.
반환 값
반환 코드 | Description |
---|---|
|
성공하고 오디오 엔드포인트 디바이스는 지정된 스트림 형식을 지원합니다. |
|
지정된 형식과 가장 가까운 일치 항목으로 성공했습니다. |
|
성공했지만 지정된 형식은 배타적 모드에서 지원되지 않습니다. |
작업이 실패할 경우 가능한 반환 코드에는 다음 표에 표시된 값이 포함되지만 이에 국한되지는 않습니다.
반환 코드 | 설명 |
---|---|
|
매개 변수 pFormat이 NULL이거나 ppClosestMatch가 NULL이고 ShareMode가 AUDCLNT_SHAREMODE_SHARED. |
|
매개 변수 ShareMode는 AUDCLNT_SHAREMODE_SHARED 또는 AUDCLNT_SHAREMODE_EXCLUSIVE 이외의 값입니다. |
|
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다. |
|
Windows 오디오 서비스가 실행되고 있지 않습니다. |
설명
이 메서드는 IAudioClient::Initialize를 호출하기 전에 오디오 엔진이 특정 스트림 형식을 지원하는지 여부를 클라이언트에서 확인할 수 있는 방법을 제공합니다.
단독 모드의 경우 IsFormatSupported는 오디오 엔드포인트 디바이스가 호출자 지정 형식을 지원하는 경우 S_OK 반환하거나 디바이스가 형식을 지원하지 않는 경우 AUDCLNT_E_UNSUPPORTED_FORMAT 반환합니다. ppClosestMatch 매개 변수는 NULL일 수 있습니다. NULL이 아닌 경우 메서드는 NULL을 *ppClosestMatch에 씁니다.
공유 모드의 경우 오디오 엔진이 호출자 지정 형식을 지원하는 경우 IsFormatSupported는*ppClosestMatch 를 NULL 로 설정하고 S_OK 반환합니다. 오디오 엔진이 호출자 지정 형식을 지원하지 않지만 비슷한 형식을 지원하는 경우 메서드는 ppClosestMatch 매개 변수를 통해 유사한 형식을 검색하고 S_FALSE 반환합니다. 오디오 엔진이 호출자 지정 형식 또는 유사한 형식을 지원하지 않는 경우 메서드는 *ppClosestMatch 를 NULL 로 설정하고 AUDCLNT_E_UNSUPPORTED_FORMAT 반환합니다.
공유 모드에서 오디오 엔진은 항상 IAudioClient::GetMixFormat 메서드를 호출하여 클라이언트가 가져올 수 있는 혼합 형식을 지원합니다. 또한 오디오 엔진은 혼합 형식과 샘플 속도 및 채널 수가 동일하지만 오디오 샘플 값의 표현이 다른 유사한 형식을 지원할 수 있습니다. 오디오 엔진은 내부적으로 샘플 값을 부동 소수점 숫자로 나타내지만 호출자 지정 형식이 샘플 값을 정수로 나타내는 경우 오디오 엔진은 일반적으로 정수 샘플 값과 내부 부동 소수점 표현 간에 변환할 수 있습니다.
오디오 디바이스의 설치 패키지에 형식 변환을 처리할 수 있는 LFX(로컬 효과) APO(오디오 처리 개체)가 포함된 경우 오디오 엔진은 더 광범위한 공유 모드 형식을 지원할 수 있습니다. LFX APO는 오디오 스트림의 디바이스별 처리를 수행하는 소프트웨어 모듈입니다. Windows 오디오 서비스의 오디오 그래프 작성기가 각 클라이언트와 오디오 엔진 간의 스트림에 LFX APO를 삽입합니다. 클라이언트가 IsFormatSupported 메서드를 호출하고 메서드가 디바이스에 사용하기 위해 LFX APO가 설치되어 있는지 확인하면 메서드는 호출자가 지정한 형식을 지원하는지 여부를 나타내는 LFX APO로 쿼리를 전달합니다.
예를 들어 특정 LFX APO는 클라이언트의 6채널 서라운드 사운드 스트림을 수락하고 스트림을 헤드폰을 통해 재생할 수 있는 스테레오 형식으로 변환할 수 있습니다. 일반적으로 LFX APO는 혼합 형식의 샘플 속도와 일치하는 샘플 속도가 있는 클라이언트 형식만 지원합니다.
API에 대한 자세한 내용은 Windows 오디오 처리 개체를 참조하세요. IsFormatSupported 메서드에 대한 자세한 내용은 디바이스 형식을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | audioclient.h |