Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

crash on playing MP3 (ESPuino) #209

Closed
tueddy opened this issue Oct 12, 2021 · 10 comments
Closed

crash on playing MP3 (ESPuino) #209

tueddy opened this issue Oct 12, 2021 · 10 comments

Comments

@tueddy
Copy link

tueddy commented Oct 12, 2021

Hi Wolle,

try to play a MP3 using ESPuino code and get this crash:

`Freier Heap-Speicher nach Setup-Routine: 114900
PSRAM: 4194204 bytes
Flash-size: 4194304 bytes
RSSI: -74 dBm
RFID-Karte empfangen: 086114072041
Neue Lautstärke empfangen via Queue: 11
Playlist-Generierung: cached
Freier Speicher: 94652
Anzahl gültiger Files/Webstreams: 3
Modus: Hoerspiel
Neue Playlist empfangen mit 3 Titel(n)
Free heap: 95488
info : PSRAM found, inputBufferSize: 283615 bytes
info : buffers freed, free Heap: 95296 bytes
info : Reading file: "/2 kleine Woelfe/1.MP3"
info : MP3Decoder has been initialized, free Heap: 71644 bytes
Titel wird abgespielt ab Position 2209224
'/2 kleine Woelfe/1.MP3' wird abgespielt (1 von 3)
info : stream ready
info : Content-Length: 2675129
info : file has no mp3 tag, skip metadata
info : Audio-Length: 2675129
info : syncword found at pos 304
info : syncword found at pos 0
info : MP3 decode error -6 : INVALID_FRAMEHEADER
info : syncword found at pos 80
info : syncword found at pos 0
info : MP3 decode error -6 : INVALID_FRAMEHEADER
info : syncword found at pos 34
info : syncword found at pos 0
info : MP3 decode error -6 : INVALID_FRAMEHEADER
info : syncword found at pos 213
info : syncword found at pos 0

E (5649) I2S: clkmdiv is too large

info : Channels: 0
info : SampleRate: 0
info : BitsPerSample: 16
info : BitRate: N/A

Guru Meditation Error: Core 1 panic'ed (IntegerDivideByZero). Exception was unhandled.

Core 1 register dump:
PC : 0x400e583b PS : 0x00060730 A0 : 0x800e5bad A1 : 0x3ffd9900
A2 : 0x3f80291c A3 : 0x00000000 A4 : 0x00000272 A5 : 0x3f804e1c
A6 : 0x3f802d1c A7 : 0xfffffffd A8 : 0x800e5838 A9 : 0x3ffd98e0
A10 : 0x00000000 A11 : 0x3f802d1c A12 : 0x400d4390 A13 : 0x00000000
A14 : 0x3f802d1c A15 : 0x00000000 SAR : 0x00000004 EXCCAUSE: 0x00000006
EXCVADDR: 0x00000000 LBEG : 0x40095455 LEND : 0x40095465 LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000

Backtrace: 0x400e583b:0x3ffd9900 0x400e5baa:0x3ffd9940 0x400e97f6:0x3ffd9970 0x400d3ebd:0x3ffd9990 0x40098076:0x3ffd9ad0
#0 0x400e583b:0x3ffd9900 in Audio::sendBytes(unsigned char*, unsigned int) at .pio\libdeps\ttgo_t8\ESP32-audioI2S-master\src/Audio.cpp:4152
#1 0x400e5baa:0x3ffd9940 in Audio::processLocalFile() at .pio\libdeps\ttgo_t8\ESP32-audioI2S-master\src/Audio.cpp:4152
#2 0x400e97f6:0x3ffd9970 in Audio::loop() at .pio\libdeps\ttgo_t8\ESP32-audioI2S-master\src/Audio.cpp:4152
#3 0x400d3ebd:0x3ffd9990 in AudioPlayer_Task(void*) at src/AudioPlayer.cpp:677
#4 0x40098076:0x3ffd9ad0 in vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)

Rebooting...
ets Jun 8 2016 00:22:57`

Using latest library version. Any idea what's goingg wrong here? As far as i remember this MP3 played without any problems before..

Thank's & best
tueddy

@schreibfaul1
Copy link
Owner

Hallo tueddy,
eine mp3 Datei beginnt mit "ID3". Das scheint nicht der Fall zu sein, der mp3-Header wird nicht gefunden. Wenn es keinen gibt sollte an Pos1 und Pos 2 das Synchronwort stehen 0xFF und 0xF0.
Hast du einen Link zu der Audiodatei?

vG Wolle

@tueddy
Copy link
Author

tueddy commented Oct 12, 2021

Hi Wolle,

das MP3 file sollte völlig i.O. sein, habe das bisher problemlos abspielen können. Arduino code ist jetzt 1.0.6, ESPuino letzer Stand.
Danke für's kümmern!

Schöne Grüße
tueddy
1.zip

@schreibfaul1
Copy link
Owner

ja, die Datei ist absolut okay. Meine ESPuino SW ist nicht der aktuelle Stand (ca. 1,5 Monate alt), aber mit V1.0.6 und ich kann 1.mp3 problemlos abspielen.

Neue Playlist empfangen mit 1 Titel(n)
Free heap: 122952
info : PSRAM found, inputBufferSize: 283615 bytes
info : buffers freed, free Heap: 122952 bytes
info : Reading file: "/mp3files/1.mp3"
info : MP3Decoder has been initialized, free Heap: 99260 bytes
'/mp3files/1.mp3' wird abgespielt (1 von 1)
info : stream ready
info : Content-Length: 2675129
info : ID3 framesSize: 2048
info : ID3 version: 2.3
info : ID3 normal frames
id3data : Title: zwei kleine w lfe kindergartenlieder zum mitsingen kinderlieder -5085823434572363002
id3data : SettingsForEncoding: fre:ac v1.1.1
info : Audio-Length: 2673081
info : syncword found at pos 0
info : Channels: 2
info : SampleRate: 44100
info : BitsPerSample: 16
info : BitRate: 128000

@tueddy
Copy link
Author

tueddy commented Oct 13, 2021

Titel wird abgespielt ab Position 2209224, vielleicht liegt da das Problem?
Backtrace sagt IntegerDivideByZero in
Audio::processLocalFile() at .pio\libdeps\ttgo_t8\ESP32-audioI2S-master\src/Audio.cpp:4152

schreibfaul1 added a commit that referenced this issue Oct 13, 2021
sampleRate = 0 can't be,  error: E (5649) I2S: clkmdiv is too large
@tueddy
Copy link
Author

tueddy commented Oct 13, 2021

Top! Probiere ich heute Abend aus und gebe Dir Rückmeldung!

@tueddy
Copy link
Author

tueddy commented Oct 13, 2021

Habe den Crash nach dem Update immer noch gehabt, diesmal in Audio::sendBytes(uint8_t* data, size_t len)

Nachdem ich die Zeile 3773 angepasst habe wird die Audiodatei wieder einwandfrei abgespielt!!!

if ((m_codec == CODEC_MP3) && (getChannels())){ m_validSamples = MP3GetOutputSamps() / getChannels(); }
Es sollte in dieser Methode überall getChannels() auf 0 geprüft werden (auch für andere Codecs) ?

@schreibfaul1
Copy link
Owner

klar, die Anzahl der Audiokanäle kann niemals Null sein, danke!

@tueddy
Copy link
Author

tueddy commented Oct 14, 2021

Bugfix passt, schönen Dank!
Dirk

@tueddy tueddy closed this as completed Oct 14, 2021
@tueddy
Copy link
Author

tueddy commented Oct 17, 2021

Hi Wolle,

sorry, gleicher Fehler ist jetzt nochmal aufgetren! getChannels() liefert anscheinend manchmal 0 zurück.
Es gibt dann eine DivByZero exception und crash. Der Backtrace zeigt wie schon oben auf die Methode sendBytes().

Ich konnte das so fixen:

uint8_t Audio::getChannels(){
if (m_channels == 0) {
// this should not happen!
m_channels = 2;
}
return m_channels;
}

Vielleicht zur Sicherheit das so abfangen?
Schöne Grüße
Dirk

@tueddy tueddy reopened this Oct 17, 2021
schreibfaul1 added a commit that referenced this issue Oct 19, 2021
@tueddy
Copy link
Author

tueddy commented Oct 19, 2021

Das sieht gut aus, schönen Dank!

@tueddy tueddy closed this as completed Oct 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants