midifile: put some parsed data in the event

Put some of the data we parsed into the event.
This commit is contained in:
Wim Taymans 2020-03-01 20:37:50 +01:00
parent 5498483337
commit 3b1fc4acce
2 changed files with 13 additions and 1 deletions

View file

@ -364,6 +364,9 @@ int midi_file_read_event(struct midi_file *mf, struct midi_event *event)
if ((res = parse_varlen(mf, tr, &size)) < 0) if ((res = parse_varlen(mf, tr, &size)) < 0)
return res; return res;
event->meta.offset = tr->p - event->data;
event->meta.size = size;
switch (meta) { switch (meta) {
case 0x2f: case 0x2f:
tr->eof = true; tr->eof = true;
@ -373,7 +376,7 @@ int midi_file_read_event(struct midi_file *mf, struct midi_event *event)
return -EINVAL; return -EINVAL;
mf->tick_sec = event->sec; mf->tick_sec = event->sec;
mf->tick_start = tr->tick; mf->tick_start = tr->tick;
mf->tempo = (tr->p[0]<<16) | (tr->p[1]<<8) | tr->p[2]; event->meta.parsed.tempo.uspqn = mf->tempo = (tr->p[0]<<16) | (tr->p[1]<<8) | tr->p[2];
break; break;
} }
size += tr->p - event->data; size += tr->p - event->data;

View file

@ -33,6 +33,15 @@ struct midi_event {
double sec; double sec;
uint8_t *data; uint8_t *data;
uint32_t size; uint32_t size;
struct {
uint32_t offset;
uint32_t size;
union {
struct {
uint32_t uspqn; /* microseconds per quarter note */
} tempo;
} parsed;
} meta;
}; };
struct midi_file_info { struct midi_file_info {