LAME version string

From Hydrogenaudio Knowledgebase
Jump to: navigation, search

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
  • " " (space) for all other release versions with minor version < 100
  • "" (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:

Related code: