다음을 통해 공유


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

GetBufferSize 메서드는 엔드포인트 버퍼의 크기(최대 용량)를 검색합니다.

구문

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

매개 변수

[out] pNumBufferFrames

메서드가 버퍼가 보유할 수 있는 오디오 프레임 수를 쓰는 UINT32 변수에 대한 포인터입니다.

반환 값

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

반환 코드 설명
AUDCLNT_E_NOT_INITIALIZED
오디오 스트림이 성공적으로 초기화되지 않았습니다.
AUDCLNT_E_DEVICE_INVALIDATED
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다.
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 오디오 서비스가 실행되고 있지 않습니다.
E_POINTER
매개 변수 pNumBufferFramesNULL입니다.

설명

이 메서드를 사용하려면 IAudioClient 인터페이스를 미리 초기화해야 합니다. 이 메서드에 대한 모든 호출은 클라이언트가 IAudioClient::Initialize 메서드를 성공적으로 호출하여 오디오 스트림을 초기화할 때까지 오류 AUDCLNT_E_NOT_INITIALIZED 실패합니다.

이 메서드는 클라이언트 애플리케이션과 오디오 엔진 간에 공유되는 엔드포인트 버퍼의 길이를 검색합니다. 길이는 버퍼가 보유할 수 있는 오디오 프레임의 수로 표현됩니다. 오디오 프레임의 크기(바이트)는 채널당 샘플 크기를 곱한 스트림의 채널 수로 계산됩니다. 예를 들어 프레임 크기는 16비트 샘플이 있는 스테레오(2 채널) 스트림의 경우 4바이트입니다.

IAudioClient::Initialize 메서드는 버퍼를 할당합니다. 클라이언트는 Initialize 메서드에 전달하는 hnsBufferDuration 매개 변수 값의 버퍼 길이를 지정합니다. 클라이언트 렌더링의 경우 버퍼 길이는 애플리케이션이 단일 처리 단계 동안 엔드포인트 버퍼에 쓸 수 있는 렌더링 데이터의 최대 양을 결정합니다. 캡처 클라이언트의 경우 버퍼 길이는 단일 처리 단계 동안 오디오 엔진이 엔드포인트 버퍼에서 읽을 수 있는 캡처 데이터의 최대 양을 결정합니다. 클라이언트는 Initialize를 호출한 후 항상 GetBufferSize를 호출하여 요청된 크기와 다를 수 있는 할당된 버퍼의 실제 크기를 결정해야 합니다.

렌더링 클라이언트는 이 값을 사용하여 각 처리 단계 동안 IAudioRenderClient::GetBuffer 에서 요청할 수 있는 가장 큰 렌더링 버퍼 크기를 계산할 수 있습니다.

GetBufferSize 메서드를 호출하는 코드 예제는 다음 topics 참조하세요.

요구 사항

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

추가 정보

IAudioClient 인터페이스

IAudioClient::Initialize

IAudioRenderClient::GetBuffer