IAudioCaptureClient::ReleaseBuffer 메서드(audioclient.h)
ReleaseBuffer 메서드는 버퍼를 해제합니다.
구문
HRESULT ReleaseBuffer(
[in] UINT32 NumFramesRead
);
매개 변수
[in] NumFramesRead
클라이언트가 캡처 버퍼에서 읽은 오디오 프레임의 수입니다. 이 매개 변수는 이전에 획득한 데이터 패킷의 프레임 수 또는 0과 같아야 합니다.
반환 값
메서드가 성공하면 S_OK가 반환되고, 실패할 경우 가능한 반환 코드는 다음 표에 표시된 값을 포함하지만 이에 국한되지 않습니다.
반환 코드 | 설명 |
---|---|
|
NumFramesRead 매개 변수는 데이터 패킷 크기 또는 0 이외의 값으로 설정됩니다. |
|
이 호출 앞에는 해당 IAudioCaptureClient::GetBuffer 호출이 없습니다. |
|
오디오 엔드포인트 디바이스가 분리되었거나 오디오 하드웨어 또는 관련 하드웨어 리소스가 다시 구성, 비활성화, 제거 또는 사용할 수 없게 되었습니다. |
|
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 |