by Chris » Thu Oct 17, 2024 6:06 pm
FWIW, it seems libsndfile isn't detecting either of the files for me either, meaning it's libmpg123 that manages to handle the files. I'd still call this an issue in libsndfile either way, if nothing else the ID3v2 tag in the first file should give it a confidence boost that there's supposed to be audio even if it may have to search deeper to get to it (the second file just has a lot of nothing at the start before reaching what appear to be dummy frames with text info before the audio data actually starts; libsndfile may just need to search a bit more by default to find it). Looking at its source, it uses libmpg123 when compiled with mpeg audio support, and seems to explicitly set the MPG123_NO_FRANKENSTEIN flag that makes it more strict about the mp3 bytestream. So I guess older GZDoom/ZMusic fell back to using libmpg123 directly without using that flag (or used an older libsndfile that used an older libmpg123 that didn't have that flag yet), allowing it to recognize the file, while newer versions rely on libsndfile with a newer libmpg123 with that flag, which is more strict and reject it.
FWIW, it seems libsndfile isn't detecting either of the files for me either, meaning it's libmpg123 that manages to handle the files. I'd still call this an issue in libsndfile either way[s], if nothing else the ID3v2 tag in the first file should give it a confidence boost that there's supposed to be audio even if it may have to search deeper to get to it (the second file just has a lot of nothing at the start before reaching what appear to be dummy frames with text info before the audio data actually starts; libsndfile may just need to search a bit more by default to find it)[/s]. Looking at its source, it uses libmpg123 when compiled with mpeg audio support, and seems to explicitly set the [c]MPG123_NO_FRANKENSTEIN[/c] flag that makes it more strict about the mp3 bytestream. So I guess older GZDoom/ZMusic fell back to using libmpg123 directly without using that flag (or used an older libsndfile that used an older libmpg123 that didn't have that flag yet), allowing it to recognize the file, while newer versions rely on libsndfile with a newer libmpg123 with that flag, which is more strict and reject it.