KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION

KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION 속성 요청은 WaveRT 버퍼의 현재 쓰기 위치를 바이트 단위로 지정합니다. 오프로드 드라이버는 이 쓰기 위치 정보를 사용하여 WaveRT 버퍼에 유효한 데이터의 양을 알 수 있습니다.

사용 요약 테이블

가져오기 설정 대상 속성 설명자 형식 속성 값 형식

아니요

Pin 인스턴스를 통한 노드

KSP_NODE

ULONG

반환 값

KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION 속성 요청은 성공적으로 완료되었음을 나타내는 STATUS_SUCCESS 반환합니다. 그렇지 않으면 요청이 적절한 오류 상태 코드를 반환합니다.

설명

이 속성 요청에서 제공하는 정보를 해석하는 방법을 더 잘 이해하려면 크기가 n바이트인 순환 버퍼를 가정합니다. 데이터를 쓰기 전의 초기 쓰기 위치는 0입니다. 데이터는 WAVEFORMATEX.nBlockAlign 바이트의 배수인 청크 단위로 버퍼에 기록됩니다.

예를 들어 버퍼에는 48000Hz에서 샘플링된 16비트 PCM 스테레오 데이터 20ms가 포함될 수 있습니다. 따라서 WAVEFORMATEX 구조체의 nBlockAlign 멤버에 대한 설명에 따라 이 예제에서는 nBlockAlign = 2 * 16/8 = 4바이트입니다. 즉, 버퍼의 길이는 48000 * 20/1000 = 960 프레임 또는 960 * 4 = 3840바이트입니다.

첫 번째 Set 요청은 버퍼에 기록된 바이트 수를 지정합니다. 또한 "쓰기 위치"는 바이트로 표현되므로 1920의 값은 버퍼 크기의 절반을 지정하는 반면 값 3840은 전체 버퍼 크기를 나타냅니다. 후속 Set 요청을 수행하기 위해 작성된 새 바이트 수를 확인하기 위해 다음 의사 코드는 계산이 수행되는 방법을 보여 줍니다.

if new write position > old write position:
     bytes written = new write position – old write position
if new write position < old write position, we’ve wrapped:
     bytes written = (new write position + buffer size) – old write position
if new write position = old write position, we’ve had a glitch
     log a "duplicate write position" glitch event

요구 사항

Version

Windows 8

헤더

Ksmedia.h

참고 항목

WAVEFORMATEX