mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-05-24 21:38:05 -04:00
midifile: correctly write SysEx events
We need to place the sysex length in the message as well.
This commit is contained in:
parent
f2de48f1e7
commit
4e389940e8
1 changed files with 13 additions and 2 deletions
|
|
@ -513,10 +513,10 @@ int midi_file_write_event(struct midi_file *mf, const struct midi_event *event)
|
||||||
{
|
{
|
||||||
struct midi_track *tr;
|
struct midi_track *tr;
|
||||||
uint32_t tick;
|
uint32_t tick;
|
||||||
void *data, *ev_data;
|
void *data;
|
||||||
size_t size;
|
size_t size;
|
||||||
int res, ev_size;
|
int res, ev_size;
|
||||||
uint8_t ev[32];
|
uint8_t ev[32], *ev_data;
|
||||||
uint64_t state = 0;
|
uint64_t state = 0;
|
||||||
|
|
||||||
spa_return_val_if_fail(event != NULL, -EINVAL);
|
spa_return_val_if_fail(event != NULL, -EINVAL);
|
||||||
|
|
@ -550,6 +550,17 @@ int midi_file_write_event(struct midi_file *mf, const struct midi_event *event)
|
||||||
CHECK_RES(write_varlen(mf, tr, tick - tr->tick));
|
CHECK_RES(write_varlen(mf, tr, tick - tr->tick));
|
||||||
tr->tick = tick;
|
tr->tick = tick;
|
||||||
|
|
||||||
|
if (ev_size > 0 &&
|
||||||
|
(ev_data[0] == 0xf0 || ev_data[0] == 0xf7)) {
|
||||||
|
CHECK_RES(write_n(mf->file, ev_data, 1));
|
||||||
|
ev_size -= 1;
|
||||||
|
ev_data += 1;
|
||||||
|
|
||||||
|
CHECK_RES(write_varlen(mf, tr, ev_size));
|
||||||
|
|
||||||
|
tr->size += 1;
|
||||||
|
}
|
||||||
|
|
||||||
CHECK_RES(write_n(mf->file, ev_data, ev_size));
|
CHECK_RES(write_n(mf->file, ev_data, ev_size));
|
||||||
tr->size += ev_size;
|
tr->size += ev_size;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue