pschatzmann / arduino-libhelix

A simple MP3 and AAC Decoder (not only) for Arduino based on libhelix
GNU General Public License v3.0
63 stars 21 forks source link

ver 0.8.3 can not play some 320k mp3 file. #15

Closed planevina closed 3 weeks ago

planevina commented 3 weeks ago

define MP3_MAX_OUTPUT_SIZE 2048 * 5

define MP3_MAX_FRAME_SIZE 3200

In ver 0.8.1 , it works good. In ver 0.8.3 , it will stuck in " mp3.write(_mp3_frame, r);" " int rc = MP3Decode(decoder, &data, &bytes_left, (short *)pcm_buffer.data(), mp3_type);" return ERR_MP3_INVALID_SCALEFACT error.

environment: ESP32S3 with 8MB psram. Arduino 3.0.1

pschatzmann commented 3 weeks ago

I tend to think that this is rather an issue with your mp3 files.

You could try if using a different min frame size helps using (setMinFrameBufferSize()). You can also activate the logging to verify what's going on in detail

I suggest that you do activate some heap checking to verify that your selected sizes are not leading to any memory corruptions.

planevina commented 3 weeks ago

Thanks for your reply. I try to change MP3_MIN_FRAME_SIZE from 1024 to 2048 , It have no effect.

All 320k 48000hz mp3 can not play . some 320k 44100 mp3 can play. (In 0.8.1 ,all of them can play ).

Now I fallback to 0.8.1. And I will use 0.8.3 to get debug log , if they can come in handy.

planevina commented 3 weeks ago

[I] [APP] Now play music index:1 [I] [DAC] Playing : S:/music/Camilla (Feat. STARRYSKY).mp3 libhelix - write 4096 libhelix - writeChunk 1024 libhelix - writeArray 1024 -> 1024 libhelix - writeChunk 1024 libhelix - writeArray 1024 -> 1024 libhelix - removing: 21 bytes libhelix - decode: 2027 libhelix - rc: 0 - available 2027 - pos 57 libhelix - writeChunk 1024 libhelix - writeArray 1024 -> 1024 libhelix - decode: 3051 libhelix - rc: 0 - available 3051 - pos 57 libhelix - writeChunk 1024 libhelix - writeArray 1024 -> 1024 libhelix - decode: 4075 libhelix - rc: 0 - available 4075 - pos 57 libhelix - removing: 57 bytes libhelix - rc: 0 - available 4018 libhelix - removing: 8 bytes libhelix - decode: 4010 libhelix - rc: 0 - available 4010 - pos 162 libhelix - removing: 162 bytes libhelix - rc: 0 - available 3848 libhelix - removing: 8 bytes libhelix - decode: 3840 libhelix - rc: 0 - available 3840 - pos 55 libhelix - removing: 55 bytes libhelix - rc: 0 - available 3785 libhelix - removing: 8 bytes libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0 libhelix - rc: 0 - available 3777 libhelix - decode: 3777 libhelix - rc: 0 - available 3777 - pos 0

planevina commented 3 weeks ago

define MP3_MAX_OUTPUT_SIZE 10240

define MP3_MAX_FRAME_SIZE 4096

define MP3_MIN_FRAME_SIZE 2048

pschatzmann commented 3 weeks ago

can you share one of your mp3 files that does not work ?

planevina commented 3 weeks ago

can you share one of your mp3 files that does not work ? Yes ,it is.

Camilla (Feat. STARRYSKY).mp3.zip

pschatzmann commented 3 weeks ago

I committed a correction that moves to the next segment if there is a decoding error. I also added some more debugging information.

planevina commented 2 weeks ago

Thank you for the swift update, I apologize for the late reply. The new version can run normally, thank you.