IAudioClient::GetBufferSize 메서드(audioclient.h)
GetBufferSize 메서드는 엔드포인트 버퍼의 크기(최대 용량)를 검색합니다.
구문
HRESULT GetBufferSize(
[out] UINT32 *pNumBufferFrames
);
매개 변수
[out] pNumBufferFrames
메서드가 버퍼가 보유할 수 있는 오디오 프레임 수를 쓰는 UINT32 변수에 대한 포인터입니다.
반환 값
메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드에는 다음 표에 표시된 값이 포함되지만 이에 국한되지는 않습니다.
반환 코드 | 설명 |
---|---|
|
오디오 스트림이 성공적으로 초기화되지 않았습니다. |
|
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다. |
|
Windows 오디오 서비스가 실행되고 있지 않습니다. |
|
매개 변수 pNumBufferFrames는 NULL입니다. |
설명
이 메서드를 사용하려면 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 |