diff options
| author | steven-na <noreply.github@stvnc.dev> | 2026-08-05 16:03:11 -0700 |
|---|---|---|
| committer | steven-na <noreply.github@stvnc.dev> | 2026-08-05 16:03:11 -0700 |
| commit | e0e52953570caea66096cda08dc814f34735f7af (patch) | |
| tree | 75ee87cb8685fe72ef944970b5fc2dbfbfecaf6c /tests/dft.c | |
| parent | e939fa891b6403fcdaba7f545b2bf7932aa7f9ba (diff) | |
Fixed byte/element inconsistencies
Diffstat (limited to 'tests/dft.c')
| -rw-r--r-- | tests/dft.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/dft.c b/tests/dft.c index 5a581bd..9c406f5 100644 --- a/tests/dft.c +++ b/tests/dft.c @@ -218,6 +218,24 @@ Test(dft, stft_segments_match_direct_transform) { smrt_arena_destroy(arena); } +Test(dft, stft_handles_unaligned_sample_count_with_wav_load_style_buffer) { + smrt_arena_t *arena = smrt_arena_create(KiB(64), KiB(4), false); + + u64 sample_count = 13, sample_rate = 16, window_size = 8, hop_size = 4; + + // Mirrors how wav_load/load_wav_file size their sample buffer: byte-aligned to + // STFT_SAMPLE_ALIGN_BYTES(window_size) and zero-initialized, not element-aligned. + f64 *samples = smrt_arena_push(arena, ALIGN_UP_POW2(sample_count * sizeof(f64), STFT_SAMPLE_ALIGN_BYTES(window_size)), true); + for (u64 i = 0; i < sample_count; i++) samples[i] = (f64)(i + 1); + + stft_data_t stft = short_time_fourier_transform(arena, window_size, hop_size, samples, sample_count, sample_rate); + + cr_assert_eq(stft.segment_count, 3); + cr_assert_neq(stft.segments, NULL); + + smrt_arena_destroy(arena); +} + Test(dft, fast_fourier_transform_matches_direct_transform) { smrt_arena_t *arena = smrt_arena_create(KiB(16), KiB(4), false); |