다음을 통해 공유


IAudioCaptureClient::ReleaseBuffer 메서드(audioclient.h)

ReleaseBuffer 메서드는 버퍼를 해제합니다.

구문

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

매개 변수

[in] NumFramesRead

클라이언트가 캡처 버퍼에서 읽은 오디오 프레임의 수입니다. 이 매개 변수는 이전에 획득한 데이터 패킷의 프레임 수 또는 0과 같아야 합니다.

반환 값

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

반환 코드 설명
AUDCLNT_E_INVALID_SIZE
NumFramesRead 매개 변수는 데이터 패킷 크기 또는 0 이외의 값으로 설정됩니다.
AUDCLNT_E_OUT_OF_ORDER
이 호출 앞에는 해당 IAudioCaptureClient::GetBuffer 호출이 없습니다.
AUDCLNT_E_DEVICE_INVALIDATED
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다.
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 오디오 서비스가 실행되고 있지 않습니다.

설명

클라이언트는 IAudioCaptureClient::GetBuffer 메서드를 호출하여 이전에 가져온 데이터 패킷 읽기를 완료할 때 이 메서드를 호출해야 합니다.

클라이언트가 GetBuffer 호출에서 얻은 패킷의 데이터는 클라이언트가 ReleaseBuffer를 호출하여 패킷을 해제할 때까지 유효한 상태로 유지되도록 보장됩니다.

GetBuffer 호출과 해당 ReleaseBuffer 호출 사이에 클라이언트는 전체 데이터 패킷을 읽거나 하나도 읽지 않아야 합니다. 클라이언트가 GetBuffer 호출 후 전체 패킷을 읽는 경우 NumFramesRead가 데이터 패킷의 총 프레임 수로 설정된 ReleaseBuffer를 호출해야 합니다. 이 경우 GetBuffer 에 대한 다음 호출은 새 데이터 패킷을 생성합니다. 클라이언트가 GetBuffer 호출 후 패킷에서 데이터를 읽지 않는 경우 NumFramesRead가 0으로 설정된 ReleaseBuffer를 호출해야 합니다. 이 경우 다음 GetBuffer 호출은 이전 GetBuffer 호출과 동일한 데이터 패킷을 생성합니다.

클라이언트가 NumFramesRead가 패킷 크기 또는 0 이외의 값으로 설정된 ReleaseBuffer를 호출하는 경우 호출이 실패하고 오류 코드 AUDCLNT_E_INVALID_SIZE 반환합니다.

클라이언트는 버퍼를 획득하는 GetBuffer 호출과 버퍼를 해제하는 ReleaseBuffer 호출 간에 과도한 지연을 방지해야 합니다. 오디오 엔진의 구현에서는 GetBuffer 호출 및 해당 ReleaseBuffer 호출이 동일한 버퍼 처리 기간 내에 발생한다고 가정합니다. 둘 이상의 기간 동안 버퍼 해제를 지연하는 클라이언트는 샘플 데이터를 잃을 위험이 있습니다.

ReleaseBuffer 메서드를 호출하는 코드 예제는 Stream 캡처를 참조하세요.

요구 사항

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

추가 정보

IAudioCaptureClient 인터페이스

IAudioCaptureClient::GetBuffer