mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
pod: add and use reserve_bytes helper
This commit is contained in:
parent
cc1ed84f9f
commit
11086f23ea
2 changed files with 13 additions and 6 deletions
|
|
@ -298,6 +298,14 @@ spa_pod_builder_bytes(struct spa_pod_builder *builder, const void *bytes, uint32
|
||||||
res = r;
|
res = r;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
static inline void *
|
||||||
|
spa_pod_builder_reserve_bytes(struct spa_pod_builder *builder, uint32_t len)
|
||||||
|
{
|
||||||
|
uint32_t offset = builder->state.offset;
|
||||||
|
if (spa_pod_builder_bytes(builder, NULL, len) < 0)
|
||||||
|
return NULL;
|
||||||
|
return SPA_POD_BODY(spa_pod_builder_deref(builder, offset));
|
||||||
|
}
|
||||||
|
|
||||||
#define SPA_POD_INIT_Pointer(type,value) (struct spa_pod_pointer){ { sizeof(struct spa_pod_pointer_body), SPA_TYPE_Pointer }, { type, 0, value } }
|
#define SPA_POD_INIT_Pointer(type,value) (struct spa_pod_pointer){ { sizeof(struct spa_pod_pointer_body), SPA_TYPE_Pointer }, { type, 0, value } }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -973,7 +973,7 @@ static int midi_play(struct data *d, void *src, unsigned int n_frames)
|
||||||
d->clock_time = last_frame;
|
d->clock_time = last_frame;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
uint32_t frame, offset;
|
uint32_t frame;
|
||||||
uint8_t *buf;
|
uint8_t *buf;
|
||||||
|
|
||||||
res = midi_file_peek_event(&d->midi.mf, &ev);
|
res = midi_file_peek_event(&d->midi.mf, &ev);
|
||||||
|
|
@ -993,11 +993,10 @@ static int midi_play(struct data *d, void *src, unsigned int n_frames)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
spa_pod_builder_control(&b, frame, SPA_CONTROL_Midi);
|
spa_pod_builder_control(&b, frame, SPA_CONTROL_Midi);
|
||||||
offset = b.state.offset;
|
if ((buf = spa_pod_builder_reserve_bytes(&b, ev.size + 1)) != NULL) {
|
||||||
spa_pod_builder_bytes(&b, NULL, ev.size + 1);
|
buf[0] = ev.status;
|
||||||
buf = SPA_POD_BODY(spa_pod_builder_deref(&b, offset));
|
memcpy(&buf[1], ev.data, ev.size);
|
||||||
buf[0] = ev.status;
|
}
|
||||||
memcpy(&buf[1], ev.data, ev.size);
|
|
||||||
next:
|
next:
|
||||||
midi_file_consume_event(&d->midi.mf, &ev);
|
midi_file_consume_event(&d->midi.mf, &ev);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue