2024-06-11 22:57:04 +02:00
Files:-
27 -> This one uses the old format of specifying a variable block strategy. Look into it.
The way to know the blocking strategy for this old format FLACs is to see if min_block_size and max_block_size are different,
if they are, then the blocking strategy is VARIABLE, if not, then it's FIXED.
2024-06-19 04:08:54 +02:00
Playback issues in the example program that may relate to the decoder:-
23 - Crunchy loud noise mixed with the actual audio data
2024-06-11 22:57:04 +02:00
uncommon/04 -> We get a bits per sample mismatch
uncommon/10 -> We error with Invalid Signature. I assume for these two I should look for the frame sync bits. But maybe my decoder should reject these. idk.
uncommon/11 -> We error with Invalid Signature
faulty/01 -> This one works when it shouldn't (Wrong max blocksize)
faulty/02 -> This one works when it shouldn't (Wrong max framesize)
2024-06-14 00:18:03 +02:00
faulty/04 -> This one works when it shouldn't. This one has a wrong number of channels (whatever that means)
2024-06-19 04:08:54 +02:00
Each frame has to be played by itself, otherwise plays sped up.
2024-06-11 22:57:04 +02:00
faulty/05 -> This one works when it shouldn't. (Wrong number of samples)
2024-06-19 04:08:54 +02:00
This should be fine to decode and play.
2024-06-11 22:57:04 +02:00
faulty/08 -> This one works when it shouldn't. (Blocksize 65536, exceeds the allowed max of 65535)
2024-06-19 04:08:54 +02:00
We should error here. We segfault currently.
faulty/09 -> This one works when it shouldn't. (Blocksize 1, below the allowed min of 16 (only the last frame is allowed to have less than 16))
We should error here. We play correctly currently.
faulty/11 -> We return an error now, but we should just warn and decode the audio fine.
2024-06-11 22:57:04 +02:00
Things:-
2024-06-15 01:29:48 +02:00
[ ] Options
2024-06-19 04:08:54 +02:00
- [x] Vorbis comment data
2024-06-15 03:39:53 +02:00
- [ ] Cuesheet ?
- [ ] Seektable ?
- [x] Picture data
2024-06-19 04:08:54 +02:00
[x] File streaming API? io.Stream??
2024-06-11 22:57:04 +02:00
[ ] Lots of checks (look at the TODOs in flac.odin)
2024-06-19 04:08:54 +02:00
[x] Memory optimizations
2024-06-14 00:18:03 +02:00
[ ] Speed optimizations
2024-06-11 22:57:04 +02:00
[ ] Seeking
2024-06-15 03:39:53 +02:00
[ ] Fuzzing to test the stability of the code
2024-06-11 22:57:04 +02:00
[ ] Encoder (low priority for now)
Security:-
Security concerns will be considered after making the decoder work correctly and robustly.