Fix MP3 Header
Reply #8 – 2007-04-18 21:24:09
After a discussion with Omion I've discovered that Foobar 0.9 does not create the complete Xing frame for CBR files, i.e. it does not generare the TOC. This might be the reason, why Foobar 0.8 refuses to detect the header. Omion also claims that Foobar does not calculate the CRC checksum of the Xing-LAME frame (I did not know there was a CRC until now), making the added frame invalid and therefore other software should not look for LAME-specific data there (delay, padding, encoder configuration). I actually don't think the TOC is required for LAME tags. I know it's optional for an XING tag and the LAME tag spec just gives a zone for the "Traditional Xing VBR Tag data", which I assume follows the same rules... it's not clear, though. The CRC issue, however, is definitely a problem. Without the LAME CRC data, that frame is not a valid LAME tag. Only with the CRC intact can you be sure (well, 99.9985% sure) that the frame contains valid LAME information. The issue came up when I noticed that my mp3packer program wouldn't accept the padding data from 0.8.3's "Fix MP3 Header". I realized that Foobar was only updating the 3 bytes that stored the header, and not changing the CRC to reflect that. I made a workaround in mp3packer to accept incorrect CRC data if the padding is the only nonzero data in the frame. However, now it looks like Foobar 0.9 also fills in other parts of the LAME tag, but still doesn't update the CRC...