mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -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;
|
||||
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 } }
|
||||
|
||||
|
|
|
|||
|
|
@ -973,7 +973,7 @@ static int midi_play(struct data *d, void *src, unsigned int n_frames)
|
|||
d->clock_time = last_frame;
|
||||
|
||||
while (1) {
|
||||
uint32_t frame, offset;
|
||||
uint32_t frame;
|
||||
uint8_t *buf;
|
||||
|
||||
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;
|
||||
|
||||
spa_pod_builder_control(&b, frame, SPA_CONTROL_Midi);
|
||||
offset = b.state.offset;
|
||||
spa_pod_builder_bytes(&b, NULL, ev.size + 1);
|
||||
buf = SPA_POD_BODY(spa_pod_builder_deref(&b, offset));
|
||||
if ((buf = spa_pod_builder_reserve_bytes(&b, ev.size + 1)) != NULL) {
|
||||
buf[0] = ev.status;
|
||||
memcpy(&buf[1], ev.data, ev.size);
|
||||
}
|
||||
next:
|
||||
midi_file_consume_event(&d->midi.mf, &ev);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue