feat(engine): render prepared per-track insert graphs (phase 82)

This commit is contained in:
Johannes Findeisen 2026-11-06 01:35:53 +01:00
commit 62cee7a7b0
10 changed files with 215 additions and 5 deletions

View file

@ -294,8 +294,37 @@ static void sample_failures(void)
}
xtc_sample_destroy(source);xtc_project_destroy(p);assert(rmdir(root)==0);
}
static void track_insert_failures(void)
{
xtc_project *p=NULL;xtc_track_chain c={0};uint64_t t,clip;int mode,failure;
assert(xtc_project_create(&p)==XTC_OK && xtc_project_add_track(p,"Track",&t)==XTC_OK);
assert(xtc_plugin_probe_format(XTC_PLUGIN_BUILTIN,XTC_BUILTIN_PATH,2,48000,&c.slots[0].plugin)==XTC_OK);
c.count=1;c.output_gain=1;c.slots[0].wet=.5f;c.slots[0].enabled=1;
assert(xtc_project_set_chain(p,t,&c)==XTC_OK);
for(mode=0;mode<2;++mode) {
int succeeded=0;
if(mode)assert(xtc_project_add_midi_clip(p,t,0,960,&clip)==XTC_OK);
for(failure=0;failure<128;++failure) {
xtc_audio_plan *a=NULL;xtc_midi_plan *m=NULL;float out[512];xtc_result r;
fail_after=failure;
r=mode ? xtc_midi_plan_create(p,48000,&m) : xtc_audio_plan_create(p,48000,&a);
fail_after=-1;
if(r==XTC_OK) {
processing=1;
if(mode)assert(xtc_midi_plan_render(m,0,NULL,0,out,512)==XTC_OK);
else assert(xtc_audio_plan_render(a,0,out,512)==XTC_OK);
processing=0;succeeded=1;
}else assert(r==XTC_ERR_OUT_OF_MEMORY && !a && !m);
xtc_audio_plan_destroy(a);xtc_midi_plan_destroy(m);
if(succeeded)break;
}
assert(succeeded);
}
xtc_project_destroy(p);
}
int main(void)
{
track_insert_failures();
sample_failures();
composition_failures();
modern_edit_failures();