diff options
| author | skal <pascal.massimino@gmail.com> | 2026-01-28 11:26:36 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-01-28 11:26:36 +0100 |
| commit | 7d022d9a3923eb35f3acd3ed4a1795c497bc53ee (patch) | |
| tree | 572c7a94fc4bffd1c2744175932ddb1556853413 | |
| parent | 58a9a7c2426f543471747165131f37c766691997 (diff) | |
feat(spectool): Optimize .spec file size by trimming trailing zeros
Implements logic to remove unused trailing zero frames from spectrogram data before saving, reducing file size and improving loading efficiency.
| -rw-r--r-- | tools/spectool.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/spectool.cc b/tools/spectool.cc index e57e77b..954aa52 100644 --- a/tools/spectool.cc +++ b/tools/spectool.cc @@ -67,6 +67,24 @@ int analyze_audio(const char *in_path, const char *out_path) { ma_decoder_uninit(&decoder); + // Trim trailing zero frames + int last_frame = spec_data.size() / DCT_SIZE; + while (last_frame > 0) { + bool all_zeros = true; + for (int i = 0; i < DCT_SIZE; ++i) { + if (spec_data[ (last_frame - 1) * DCT_SIZE + i ] != 0.0f) { + all_zeros = false; + break; + } + } + if (all_zeros) { + last_frame--; + } else { + break; + } + } + spec_data.resize(last_frame * DCT_SIZE); + // Write to .spec file FILE *f_out = fopen(out_path, "wb"); if (!f_out) { |
