Compartir a través de


Estructura KSMUSICFORMAT (ksmedia.h)

La estructura KSMUSICFORMAT se usa para enviar y recibir información sobre los datos MIDI que son de entrada y salida a 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 esta es la primera estructura KSMUSICFORMAT del búfer, este campo representa el delta (cambio de hora, en milisegundos) de la 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.

Observaciones

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 SystemBuffer campo un puntero a una estructura de KSSTREAM_HEADER, que sirve como encabezado para un paquete de datos que se va a leer o escribir en un pin del controlador de streaming. El encabezado de flujo KS contiene en su Datos campo 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 atendiendo antes de que comience el mantenimiento del siguiente IRP, el tiempo también debe aumentar siempre en 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 realmente se juega en 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
encabezado de ksmedia.h (incluya Ksmedia.h)

Consulte también

KSSTREAM_HEADER