Struttura KSMUSICFORMAT (ksmedia.h)

La struttura KSMUSICFORMAT viene usata per inviare e ricevere informazioni sui dati MIDI di input e output ai 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 (modifica dell'ora, in millisecondi) da PresentationTime nella struttura KSSTREAM_HEADER struttura. In caso contrario, il campo rappresenta l'offset differenziale (in millisecondi) dal messaggio precedente (struttura KSMUSICFORMAT). Se questa ora è passata, 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 con DWORD e potrebbero consentire spazi vuoti aggiuntivi o byte usati, ByteCount deve essere il numero effettivo di byte presenti e non includere alcuna spaziatura interna che separa le strutture dei 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 campo Data 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 certo numero di byte di dati.

Gli indicatori di data e ora in questi IRP aumentano sempre tra gli IRP emessi successivamente. Tuttavia, poiché ogni IRP in una sequenza è completamente funzionante prima dell'inizio della manutenzione del successivo IRP, anche il tempo deve aumentare sempre tra gli IRP. Ciò può causare una situazione anomaa, 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 riprodotto a 125 millisecondi, ma viene effettivamente riprodotto a 131 millisecondi. Questo IRP non viene elaborato fino al termine del precedente IRP a 131 millisecondi.
Messaggio n. 2 TimeDeltaMs: 15 Verrà riprodotto a 140 millisecondi.

Requisiti

   
Intestazione ksmedia.h (includere Ksmedia.h)

Vedi anche

KSSTREAM_HEADER