LAME version string
The 9-character LAME short version string, as written in the LAME tag, has the following format:
- "
LAME
" + major version + ".
" + minor version + flag
When the minor version is > 99, as is expected to happen when LAME 3.100 is released, the ".
" will be omitted:
- "
LAME
" + major version + minor version + flag
If the version string is ever is less than 9 bytes, it is null-padded when written to the LAME tag.
The flag is normally one of the following:
- "
a
" for alpha versions - "
b
" for beta versions - "
r
" for release versions with patch version > 0, starting with 3.96.1 - "
- "" (empty string) for release versions with patch version = 0 and minor version > 99
For LAME 3.99.1, the format was changed such that release versions with a patch version > 0 would be identified with the following format:
- "
L
" + major version + ".
" + minor version + flag + patch version
However, the new code contained a minor error which resulted in the patch version being omitted, and the change of "LAME
" to "L
" proved to be problematic for hardware and software players which failed to recognize the LAME tags as such, adversely affecting gapless playback and encoder identification, so the new scheme was abandoned for 3.99.2 and up.
Examples:
- 3.98 = 3.98.0 = "
LAME3.98
" followed by a space character (byte 0x20) - 3.98.1 through 3.98.4 = "
LAME3.98r
" - 3.99 alpha versions = "
LAME3.99a
" - 3.99 beta versions = "
LAME3.99b
" - 3.99 = 3.99.0 = "
LAME3.99
" followed by a space character - 3.99.1 = "
L3.99r
" followed by three null characters (byte 0x00) - 3.99.2 through 3.99.n = "
LAME3.99r
" - 3.100 alpha versions = "
LAME3100a
"
Related discussion thread:
- LAME 3.99 is out (reports and discussion from 9 through 18 Nov 2011).
Related code:
- version.c in CVS (revisions 1.31 through 1.34)