Condividi tramite


KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION

La richiesta di proprietà KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION specifica la posizione di scrittura corrente del buffer WaveRT in byte. Il driver di offload può usare queste informazioni sulla posizione di scrittura per sapere quanti dati validi si trovano nel buffer WaveRT.

Tabella riepilogo utilizzo

Recupero Set Destinazione Tipo di descrittore di proprietà Tipo valore proprietà

No

Nodo tramite l'istanza di Pin

KSP_NODE

ULONG

Valore restituito

La richiesta di proprietà KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION restituisce STATUS_SUCCESS per indicare che è stata completata correttamente. In caso contrario, la richiesta restituisce un codice di stato di errore appropriato.

Commenti

Per comprendere meglio come interpretare le informazioni fornite da questa richiesta di proprietà, si supponga un buffer circolare di dimensioni n byte. La posizione di scrittura iniziale, prima della scrittura dei dati, è 0. I dati vengono scritti nel buffer in blocchi costituiti da più byte WAVEFORMATEX.nBlockAlign .

Ad esempio, il buffer potrebbe contenere 20 ms di dati stereo PCM a 16 bit, campionati a 48000 Hz. Pertanto, in base alla descrizione per il membro nBlockAlign della struttura WAVEFORMATEX , in questo esempio nBlockAlign = 2 * 16 / 8 = 4 byte. Ciò significa che la lunghezza del buffer sarà 48000 * 20 / 1000 = 960 frame o 960 * 4 = 3840 byte.

La prima richiesta Set specifica il numero di byte scritti nel buffer. Poiché la "posizione di scrittura" è espressa in byte, il valore 1920 specifica la metà delle dimensioni del buffer, mentre un valore pari a 3840 indica le dimensioni del buffer completo. Per determinare il numero di nuovi byte scritti, per effettuare richieste set successive, lo pseudo codice seguente mostra come viene eseguito il calcolo:

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

Requisiti

Versione

Windows 8

Intestazione

Ksmedia.h

Vedere anche

WAVEFORMATEX