Estrutura KSMUSICFORMAT (ksmedia.h)
A estrutura KSMUSICFORMAT é usada para enviar e receber informações sobre dados MIDI que são de entrada e saída para dispositivos de áudio WDM.
Sintaxe
typedef struct {
ULONG TimeDeltaMs;
ULONG ByteCount;
} KSMUSICFORMAT, *PKSMUSICFORMAT;
Membros
TimeDeltaMs
Indica quando essa série de bytes de dados MIDI deve ser reproduzida. Se esta for a primeira estrutura KSMUSICFORMAT no buffer, esse campo representará o delta (alteração de tempo, em milissegundos) do PresentationTime na estrutura KSSTREAM_HEADER . Caso contrário, o campo representa o deslocamento delta (em milissegundos) da mensagem anterior (estrutura KSMUSICFORMAT). Se esse tempo estiver no passado, a mensagem será reproduzida imediatamente.
ByteCount
Especifica o número de bytes de dados que seguem essa estrutura. Como a estrutura ou as propriedades subsequentes devem ser alinhadas ao DWORD e podem permitir espaços em branco extras ou bytes usados, ByteCount deve ser o número real de bytes presentes e não incluir nenhum preenchimento separando as estruturas de dados.
Comentários
Essa estrutura é usada para enviar e receber IRPs que contêm informações sobre fluxos de entrada e saída MIDI. O PRÓPRIO IRP contém em seu campo SystemBuffer um ponteiro para uma estrutura KSSTREAM_HEADER, que serve como um cabeçalho para um pacote de dados que deve ser lido ou gravado em um pino de driver de streaming. O cabeçalho de fluxo KS contém em seu campo Dados um ponteiro para o buffer que contém os dados. Os dados nesse buffer consistem em uma sequência de mensagens, cada uma delas uma estrutura KSMUSICFORMAT que é seguida imediatamente por alguns bytes de dados.
Os carimbos de data/hora nesses IRPs sempre aumentam entre IRPs emitidos sucessivamente. No entanto, como cada IRP em uma sequência é totalmente atendido antes do início da manutenção do próximo IRP, o tempo também deve sempre aumentar entre OS IRPs. Isso pode levar a uma situação anormal, conforme descrito no exemplo a seguir.
Ação | Descrição |
---|---|
IRP nº 1 PresentationTime = 123 milissegundos | |
Mensagem nº 1 TimeDeltaMs: 0 | Será jogado a 123 milissegundos. |
Mensagem nº 2 TimeDeltaMs: 1 | Será jogado a 124 milissegundos. |
Mensagem nº 3 TimeDeltaMs: 7 | Será jogado a 131 milissegundos. |
IRP nº 2 PresentationTime = 120 milissegundos | |
Mensagem nº 1 TimeDeltaMs: 5 | Deveria ser jogado a 125 milissegundos, mas na verdade é jogado a 131 milissegundos. Esse IRP não é processado até que o IRP anterior seja concluído em 131 milissegundos. |
Mensagem nº 2 TimeDeltaMs: 15 | Será jogado a 140 milissegundos. |
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ksmedia.h (inclua Ksmedia.h) |