Estructura KSMUSICFORMAT (ksmedia.h)

La estructura KSMUSICFORMAT se utiliza para enviar y recibir información sobre los datos MIDI que son de entrada y salida a los dispositivos de audio WDM.

Sintaxis

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

Miembros

TimeDeltaMs

Indica cuándo se debe reproducir esta serie de bytes de datos MIDI. Si se trata de la primera estructura KSMUSICFORMAT del búfer, este campo representa el delta (cambio de hora, en milisegundos) de PresentationTime en la estructura KSSTREAM_HEADER . De lo contrario, el campo representa el desplazamiento diferencial (en milisegundos) del mensaje anterior (estructura KSMUSICFORMAT). Si esta vez está en el pasado, el mensaje se reproduce inmediatamente.

ByteCount

Especifica el número de bytes de datos que siguen esta estructura. Dado que la estructura o las propiedades posteriores deben estar alineadas con DWORD y pueden permitir espacios en blanco adicionales o bytes usados, ByteCount debe ser el número real de bytes presentes y no incluir ningún relleno que separa las estructuras de datos.

Comentarios

Esta estructura se usa para enviar y recibir IRP que contienen información sobre flujos de entrada y salida MIDI. El IRP contiene en su campo SystemBuffer un puntero a una estructura de KSSTREAM_HEADER, que actúa como encabezado para un paquete de datos que se va a leer o escribir en un pin del controlador de streaming. El encabezado de secuencia KS contiene en su campo Datos un puntero al búfer que contiene los datos. Los datos de ese búfer constan de una secuencia de mensajes, cada uno de los cuales es una estructura KSMUSICFORMAT seguida inmediatamente de algún número de bytes de datos.

Las marcas de tiempo de estos IRP siempre aumentan en los IRP emitidos sucesivamente. Sin embargo, dado que cada IRP de una secuencia está totalmente servicio antes de que comience el mantenimiento del siguiente IRP, el tiempo también debe aumentar siempre entre los IRP. Esto puede provocar una situación anómala, como se describe en el ejemplo siguiente.

Acción Descripción
IRP #1 PresentationTime = 123 milisegundos
Mensaje n.º 1 TimeDeltaMs: 0 Se jugará a 123 milisegundos.
Mensaje n.º 2 TimeDeltaMs: 1 Se jugará a 124 milisegundos.
Mensaje n.º 3 TimeDeltaMs: 7 Se jugará a 131 milisegundos.
IRP #2 PresentationTime = 120 milisegundos
Mensaje n.º 1 TimeDeltaMs: 5 Se supone que se juega a 125 milisegundos, pero en realidad se juega a 131 milisegundos. Este IRP no se procesa hasta que finaliza el IRP anterior a 131 milisegundos.
Mensaje n.º 2 TimeDeltaMs: 15 Se jugará a 140 milisegundos.

Requisitos

Requisito Valor
Header ksmedia.h (incluye Ksmedia.h)

Consulte también

KSSTREAM_HEADER