Compartilhar via


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)

Confira também

KSSTREAM_HEADER