KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION
KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION 속성 요청은 WaveRT 버퍼의 현재 쓰기 위치를 바이트 단위로 지정합니다. 오프로드 드라이버는 이 쓰기 위치 정보를 사용하여 WaveRT 버퍼에 유효한 데이터의 양을 알 수 있습니다.
사용량 요약 테이블
가져오기 | 설정 | 대상 | 속성 설명자 형식 | 속성 값 형식 |
---|---|---|---|---|
아니요 |
예 |
고정 instance 통한 노드 |
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 |