Condividi tramite


struttura KSAUDIO_POSITION (ksmedia.h)

La struttura KSAUDIO_POSITION specifica le posizioni correnti dei cursori di riproduzione e scrittura nel buffer audio per un flusso audio.

Sintassi

typedef struct {
#if ...
  ULONGLONG PlayOffset;
#if ...
  ULONGLONG WriteOffset;
#else
  DWORDLONG PlayOffset;
#endif
#else
  DWORDLONG WriteOffset;
#endif
} KSAUDIO_POSITION, *PKSAUDIO_POSITION;

Membri

PlayOffset

Specifica la posizione di riproduzione corrente come offset di byte.

WriteOffset

Specifica la posizione di scrittura corrente come offset di byte.

Osservazioni

Questa struttura viene utilizzata per ottenere e impostare il valore dei dati per la proprietà KSPROPERTY_AUDIO_POSITION.

Per un buffer client a ciclo (con tipo di flusso KSINTERFACE_STANDARD_LOOPED_STREAMING), PlayOffset e WriteOffset sono offset di byte nel buffer client. Quando uno degli offset raggiunge la fine del buffer, esegue il wrapping all'inizio del buffer. Di conseguenza, nessun offset supera mai le dimensioni del buffer.

Per un buffer client nonlooped (con tipo di flusso KSINTERFACE_STANDARD_STREAMING), PlayOffset e WriteOffset non sono offset in un buffer fisico allocato dal driver o da un client allocato. Questi offset sono invece relativi al flusso e possono essere considerati come offset in un buffer idealizzato che contiene l'intero flusso ed è contiguo dall'inizio alla fine. Eventuali offset interni che puntano ai buffer fisici effettivi che contengono i dati devono essere mantenuti separatamente.

Durante la riproduzione, i valori PlayOffset e WriteOffset vengono interpretati come segue:

  • PlayOffset è l'offset dell'ultimo byte nel buffer riprodotto. PlayOffset + 1 è l'offset del byte successivo che verrà riprodotto.
  • WriteOffset è l'offset dell'ultimo byte nel buffer di riproduzione.
Quando un client invia un altro buffer al dispositivo per la riproduzione, WriteOffset incrementerà al ricevimento del buffer per indicare il nuovo valore WriteOffset , ma PlayOffset non cambia fino a quando tale buffer non viene effettivamente riprodotto dal dispositivo.

Durante la registrazione, i valori PlayOffset PlayOffset e writeOffset vengono interpretati come segue:

  • PlayOffset è l'offset dell'ultimo byte nel buffer acquisito. PlayOffset + 1 è l'offset del byte successivo che verrà acquisito.
  • writeOffset è l'offset dell'ultimo byte nel buffer di acquisizione.
Quando un'applicazione invia un altro buffer al dispositivo per l'acquisizione, il valore writeOffset incrementerà al ricevimento del buffer. Il valore PlayOffset non cambierà finché i dati non vengono effettivamente acquisiti nel buffer.

Lo spazio tra PlayOffset e WriteOffset viene considerato off-limits per il client perché rappresenta la parte del buffer client che è già stato inviato al driver e potrebbe essere ancora in uso dal driver.

Per altre informazioni, vedere proprietà Posizione audio.

Fabbisogno

Requisito Valore
intestazione ksmedia.h (include Ksmedia.h)

Vedere anche

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION