commit 15f0f6a470c2c3a09869a9b51574dc66420325e0
parent 7776ef1e076143b9f9a5c621e88d4f62a70d0f86
Author: Alexandre BIQUE <bique.alexandre@gmail.com>
Date: Tue, 3 May 2022 22:08:17 +0200
Simplify and add documentation
Diffstat:
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/plugin-template.c b/src/plugin-template.c
@@ -186,9 +186,10 @@ static clap_process_status my_plug_process(const struct clap_plugin *plugin,
const uint32_t nframes = process->frames_count;
const uint32_t nev = process->in_events->size(process->in_events);
uint32_t ev_index = 0;
- uint32_t next_ev_frame = (nev == 0 ? nframes : 0);
+ uint32_t next_ev_frame = 0;
for (uint32_t i = 0; i < nframes;) {
+ /* handle every events that happrens at the frame "i" */
while (ev_index < nev && next_ev_frame == i) {
const clap_event_header_t *hdr = process->in_events->get(process->in_events, ev_index);
if (hdr->time != i) {
@@ -198,13 +199,17 @@ static clap_process_status my_plug_process(const struct clap_plugin *plugin,
my_plug_process_event(plug, hdr);
++ev_index;
+
if (ev_index == nev) {
+ // we reached the end of the event list
next_ev_frame = nframes;
+ break;
}
}
- const uint32_t until_frame = next_ev_frame < nframes ? next_ev_frame : nframes;
- for (; i < until_frame; ++i) {
+ /* process every samples until the next event */
+ for (; i < next_ev_frame; ++i) {
+ // fetch input samples
const float in_l = process->audio_inputs[0].data32[0][i];
const float in_r = process->audio_inputs[0].data32[1][i];
@@ -212,6 +217,7 @@ static clap_process_status my_plug_process(const struct clap_plugin *plugin,
const float out_l = in_r;
const float out_r = in_l;
+ // store output samples
process->audio_outputs[0].data32[0][i] = out_l;
process->audio_outputs[0].data32[1][i] = out_r;
}