Condividi tramite


KSAUDIO_POSITION struttura (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;

Members

PlayOffset

Specifica la posizione di gioco corrente come offset di byte.

WriteOffset

Specifica la posizione di scrittura corrente come offset di byte.

Commenti

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

Per un buffer client ciclo (con tipo di flusso KSINTERFACE_STANDARD_LOOPED_STREAMING), PlayOffset e WriteOffset sono offset byte nel buffer client. Quando entrambi gli offset raggiungono la fine del buffer, viene eseguito il wrapping all'inizio del buffer. Di conseguenza, nessuno dei due offset supera mai le dimensioni del buffer.

Per un buffer client nonlooped (con tipo di flusso KSINTERFACE_STANDARD_STREAMING), PlayOffset e WriteOffset non vengono 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 momento della ricezione del buffer per indicare il nuovo valore WriteOffset, ma PlayOffset non cambia fino a quando tale buffer non è stato effettivamente riprodotto dal dispositivo.

Durante la registrazione, i valori 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 verrà incrementato al momento della ricezione del buffer. Il valore PlayOffset non cambierà finché i dati non vengono effettivamente acquisiti nel buffer.

Lo spazio tra PlayOffset e WriteOffset viene considerato non limitato al client perché rappresenta la parte del buffer client già inviato al driver e potrebbe comunque essere in uso dal driver.

Per altre informazioni, vedere Proprietà posizione audio.

Requisiti

Requisito Valore
Intestazione ksmedia.h (includere Ksmedia.h)

Vedi anche

KSINTERFACE_STANDARD_LOOPED_STREAMING

KSINTERFACE_STANDARD_STREAMING

KSPROPERTY_AUDIO_POSITION