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 |
Sì |
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 |