Struttura KSMUSICFORMAT (ksmedia.h)

La struttura KSMUSICFORMAT viene utilizzata per inviare e ricevere informazioni sui dati MIDI che vengono inseriti e inviati a dispositivi audio WDM.

Sintassi

typedef struct {
  ULONG TimeDeltaMs;
  ULONG ByteCount;
} KSMUSICFORMAT, *PKSMUSICFORMAT;

Members

TimeDeltaMs

Indica quando deve essere riprodotta questa serie di byte di dati MIDI. Se si tratta della prima struttura KSMUSICFORMAT nel buffer, questo campo rappresenta il delta (variazione temporale, in millisecondi) della struttura PresentationTime nella struttura KSSTREAM_HEADER . In caso contrario, il campo rappresenta l'offset differenziale (in millisecondi) del messaggio precedente (struttura KSMUSICFORMAT). Se questa volta è passato, il messaggio viene riprodotto immediatamente.

ByteCount

Specifica il numero di byte di dati che seguono questa struttura. Poiché la struttura o le proprietà successive devono essere allineate a DWORD e potrebbero consentire spazi vuoti aggiuntivi o byte usati, ByteCount deve essere il numero effettivo di byte presenti e non includere spaziatura interna che separa le strutture di dati.

Commenti

Questa struttura viene usata per inviare e ricevere irP contenenti informazioni sui flussi di input e output MIDI. L'IRP stesso contiene nel campo SystemBuffer un puntatore a una struttura KSSTREAM_HEADER, che funge da intestazione per un pacchetto di dati da leggere o scrivere in un pin del driver di streaming. L'intestazione del flusso KS contiene nel relativo campo Dati un puntatore al buffer che contiene i dati. I dati in tale buffer sono costituiti da una sequenza di messaggi, ognuno dei quali è una struttura KSMUSICFORMAT immediatamente seguita da un numero di byte di dati.

I timestamp in questi irP aumentano sempre tra i runtime di integrazione rilasciati successivamente. Tuttavia, poiché ogni IRP in una sequenza viene completamente gestito prima dell'inizio della manutenzione del successivo IRP, anche il tempo deve aumentare sempre tra i provider di integrazione. Ciò può causare una situazione anomala, come descritto nell'esempio seguente.

Azione Descrizione
IRP #1 PresentationTime = 123 millisecondi
Messaggio n. 1 TimeDeltaMs: 0 Verrà riprodotto a 123 millisecondi.
Messaggio n. 2 TimeDeltaMs: 1 Verrà riprodotto a 124 millisecondi.
Messaggio n. 3 TimeDeltaMs: 7 Verrà riprodotto a 131 millisecondi.
IRP #2 PresentationTime = 120 millisecondi
Messaggio n. 1 TimeDeltaMs: 5 Dovrebbe essere giocato a 125 millisecondi, ma in realtà viene riprodotto a 131 millisecondi. Questo IRP non viene elaborato fino al termine dell'IRP precedente a 131 millisecondi.
Messaggio n. 2 TimeDeltaMs: 15 Verrà riprodotto a 140 millisecondi.

Requisiti

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

Vedi anche

KSSTREAM_HEADER