|Allegro 5 can compile MP3 support but physically cannot play MP3s, on Linux|
I've got libpulse-dev, libasound-dev, minimp3 from github for Linux audio support for cmake.
[sidenote: OSS (open source sound) support is in by default, but OSS is heavily depreciated and disabled in the kernel on most distros according to some quick googling.]
Cmake-GUI lists MP3 support as YES.
- Acodec addon: yes - FLAC: NO - DUMB: NO - Ogg/Vorbis: yes - Opus: NO - MP3: yes
and throws no warnings.
Then, when I try to play a mp3 the allegro.log says
audio I audio.c:378 do_install_audio [ 0.54679] Using PulseAudio driver audio E audio_io.c:324 al_load_sample [ 0.55076] No handler for audio file extension .mp3 - therefore not trying to load ./data/extra/sounds/pixabay/karate-chop-6357.mp3.
[My build process is confirmed to be running (make -> make install) because before I didn't have PulseAudio/ALSA support and the error was regarding that.
So unless I'm mistaken and I have to manually register the mp3 file handler, this looks like a bug in the build process.
The following Allegro code looks like it is supposed to auto setup the handler:
addons/acodec/acodec.c-65- addons/acodec/acodec.c-66- /* MP3 will mis-identify a lot of mod files, so put its identifier last */ addons/acodec/acodec.c-67-#ifdef ALLEGRO_CFG_ACODEC_MP3 addons/acodec/acodec.c:68: ret &= al_register_sample_loader(".mp3", _al_load_mp3); addons/acodec/acodec.c-69- ret &= al_register_audio_stream_loader(".mp3", _al_load_mp3_audio_stream); addons/acodec/acodec.c:70: ret &= al_register_sample_loader_f(".mp3", _al_load_mp3_f); addons/acodec/acodec.c-71- ret &= al_register_audio_stream_loader_f(".mp3", _al_load_mp3_audio_stream_f); addons/acodec/acodec.c-72- ret &= al_register_sample_identifier(".mp3", _al_identify_mp3); addons/acodec/acodec.c-73-#endif
 Issue resolved via discord while A.CC was down. I wasn't initializing the Allegro codec. Which exists on a two line separate page of the A5 manual and not mentioned in the entire sound section of the manual. 10/10 esport ready.
This is a separate module... and it has TWO FUNCTIONS.