Older Releases
TagLib 2.0.1 Release - Apr 9, 2024
- Fix aborting when _GLIBCXX_ASSERTIONS are enabled.
- Fall back to utf8cpp header detection in the case that its CMake configuration is removed.
- Improve compatibility with the SWIG interface compiler.
- Build system fixes for testing without bindings, Emscripten and Illumos.
- C bindings: Fix setting UTF-8 encoded property values.
- Windows: Fix opening long paths.
TagLib 2.0 Release - Jan 24, 2024
- New major version, binary incompatible, but mostly source-compatible with the latest 1.x release if no deprecated features are used. Simple applications should build without changes, more complex applications (e.g. extending classes of TagLib) will have to be adapted.
- Requires a C++17 compiler and uses features of C++17.
- Major code cleanup, fixed warnings issued by compilers and static analyzers.
- Made methods virtual which should have been virtual but could not be changed to keep binary compatibility, remove related workarounds.
- Removed deprecated functions:
- APE::Item::Item(const String &, const String &)
- APE::Item::toStringList(): Use values()
- APE::Item::value(): Use binaryData()
- ASF::Properties::setLength()
- ByteVector::checksum()
- ByteVector::isNull(): Use isEmpty()
- ByteVector::null
- FLAC::File::setID3v2FrameFactory()
- FLAC::File::streamInfoData()
- FLAC::File::streamLength()
- FLAC::Properties::Properties(File *, ReadStyle)
- FLAC::Properties::sampleWidth(): Use bitsPerSample()
- File::isReadable(): Use system functions
- File::isWritable(): Use system functions
- FileName::str()
- FileRef::create(): Use constructor
- MP4::Tag::itemListMap(): Use itemMap()
- MPC::File::remove(): Use strip()
- MPC::Properties::Properties(const ByteVector &, long, ReadStyle)
- MPEG::File::save(int, …): Use overload
- MPEG::File::setID3v2FrameFactory(): Use constructor
- MPEG::ID3v2::Frame::Header::Header(const ByteVector &, bool)
- MPEG::ID3v2::Frame::Header::frameAlterPreservation(): Use fileAlterPreservation()
- MPEG::ID3v2::Frame::Header::setData(const ByteVector &, bool)
- MPEG::ID3v2::Frame::Header::size(unsigned int): Use size()
- MPEG::ID3v2::Frame::Header::unsycronisation(): use unsynchronisation()
- MPEG::ID3v2::Frame::checkEncoding(const StringList &, String::Type): Use checkTextEncoding(const StringList &, String::Type)
- MPEG::ID3v2::Frame::headerSize(): Use Header::size()
- MPEG::ID3v2::Frame::headerSize(unsigned int): Use Header::size(unsigned int)
- MPEG::ID3v2::FrameFactory::createFrame(const ByteVector &, bool)
- MPEG::ID3v2::FrameFactory::createFrame(const ByteVector &, unsigned int): Use createFrame(const ByteVector &, const Header *)
- MPEG::ID3v2::RelativeVolumeFrame::channelType()
- MPEG::ID3v2::RelativeVolumeFrame::peakVolume(): Use peakVolume(ChannelType)
- MPEG::ID3v2::RelativeVolumeFrame::setChannelType()
- MPEG::ID3v2::RelativeVolumeFrame::setPeakVolume(const PeakVolume &): Use setPeakVolume(const PeakVolume &, ChannelType)
- MPEG::ID3v2::RelativeVolumeFrame::setVolumeAdjustment(float): Use setVolumeAdjustment(float, ChannelType)
- MPEG::ID3v2::RelativeVolumeFrame::setVolumeAdjustmentIndex(short): Use setVolumeAdjustmentIndex(short, ChannelType)
- MPEG::ID3v2::RelativeVolumeFrame::volumeAdjustment(): Use volumeAdjustment(ChannelType)
- MPEG::ID3v2::RelativeVolumeFrame::volumeAdjustmentIndex(): Use volumeAdjustmentIndex(ChannelType)
- MPEG::ID3v2::Tag::footer()
- MPEG::ID3v2::Tag::render(int): Use render(Version)
- MPEG::XingHeader::xingHeaderOffset()
- Ogg::Page::getCopyWithNewPageSequenceNumber()
- Ogg::XiphComment::removeField(): Use removeFields()
- PropertyMap::unsupportedData(): Returns now const reference, use addUnsupportedData() to add keys
- RIFF::AIFF::Properties::Properties(const ByteVector &, ReadStyle)
- RIFF::AIFF::Properties::Properties(const ByteVector &, int, ReadStyle)
- RIFF::AIFF::Properties::sampleWidth(): Use bitsPerSample()
- RIFF::WAV::File::save(TagTypes, bool, int): Use save(TagTypes, StripTags, Version)
- RIFF::WAV::File::tag(): Returns now a TagUnion, use ID3v2Tag() to get an ID3v2::Tag
- String::isNull(): Use isEmpty()
- String::null
- TrueAudio::File::setID3v2FrameFactory(): Use constructor
- WavPack::Properties::Properties(const ByteVector &, long, ReadStyle)
- Made methods const: Frame::Header::size(), Frame::headerSize(), MP4::Atom::findall(), MP4::Atoms::find(), MP4::Atoms::path().
- Made classes non-virtual: APE::Footer, APE::Item, ASF::Attribute, ASF::Picture, MP4::CoverArt, MP4::Item, ID3v2::ExtendedHeader, ID3v2::Footer, ID3v2::Header, MPEG::Header, MPEG::XingHeader, Ogg::Page, Ogg::PageHeader.
- Removed type definitions in TagLib namespace: wchar, uchar, ushort, uint, ulong, ulonglong, wstring: Use the standard types.
- Removed include file taglib_config.h and its defines TAGLIB_WITH_ASF, TAGLIB_WITH_MP4: They were always 1 since version 1.8.
- Behavioral changes:
- The basic tag methods (e.g. genre()) separate multiple values with “ / “ instead of “ “.
- The stream operator for String uses UTF-8 instead of ISO-8859-1 encoding.
- MP4 property ORIGINALDATE is mapped to “—-:com.apple.iTunes:ORIGINALDATE” instead of “—-:com.apple.iTunes:originaldate”.
- MP4 property ENCODEDBY is mapped to “©enc” instead of “©too”, which is now mapped to ENCODING.
- Unified interface for complex properties like pictures.
- Simplified the unified properties interface by providing its methods on FileRef.
- C bindings: Support for properties (taglib_property_…) and complex properties like cover art (taglib_complex_property_…), memory I/O streams.
- Support for Direct Stream Digital (DSD) stream files (DSF) and interchange file format (DSDIFF, DFF), ADTS (AAC) files.
- The runtime version can be queried.
- Additional utility functions ByteVector::fromUShort(), ByteVector::fromULongLong(), ByteVector::toULongLong(), ByteVector::toULongLong(), List::sort().
- Fixed List::setAutoDelete() affecting implicitly shared copies.
- Build system: Direct support for CMake, find_package(TagLib) exports target TagLib::tag.
- Build system: Fixed PackageConfig to support both relative and absolute paths.
- Build system: utf8cpp is no longer included, it can be provided via a system package or a Git submodule.
- ASF: Support additional properties ARTISTWEBPAGE, ENCODING, ENCODINGTIME, FILEWEBPAGE, INITIALKEY, ORIGINALALBUM, ORIGINALARTIST, ORIGINALFILENAME, ORIGINALLYRICIST.
- ID3v2: Fixed extensibility of FrameFactory, use it also for WAV and AIFF files.
- MP4: Support additional properties OWNER, RELEASEDATE.
- MP4: Introduced ItemFactory allowing clients to support new atom types.
- MP4: Detect duration from mvhd atom if not present in mdhd atom.
- MP4: Fixed type of hdvd atom to be integer instead of boolean.
- MP4: Tolerate trailing garbage in M4A files.
- MPC: Fixed content check in presence of an ID3v2 tag.
- MPEG: Do not scan full file for ID3v2 tag when ReadStyle Fast is used.
- RIFF: Support properties ALBUM, ARRANGER, ARTIST, ARTISTWEBPAGE, BPM, COMMENT, COMPOSER, COPYRIGHT, DATE, DISCSUBTITLE, ENCODEDBY, ENCODING, ENCODINGTIME, GENRE, ISRC, LABEL, LANGUAGE, LYRICIST, MEDIA, PERFORMER, RELEASECOUNTRY, REMIXER, TITLE, TRACKNUMBER.
- WAV: Fixed crash with files having the “id3 “ chunk as the only valid chunk.
- Windows: Fixed support for files larger than 2GB.
TagLib 1.13.1 Release - Jul 1, 2023
- Fixed parsing of TXXX frames without description.
- Detect MP4 atoms with invalid length or type.
- Do not miss ID3v2 frames when an extended header is present.
- Use property “DISCSUBTITLE” for ID3v2 “TSST” frame.
- Build system improvements: Use absolute path for macOS dylib install name, support –define-prefix when using pkg-config, fixed minimum required CppUnit version.
- Code clean up using clang-tidy.
TagLib 1.13 Release - Oct 27, 2022
- Added interface StreamTypeResolver to support streams which cannot be fopen()’ed, e.g. network files.
- Added MP4::File::strip() to remove meta atom from MP4 file.
- Added Map::value() to look up without creating entry.
- Use property “WORK” instead of “CONTENTGROUP” for ID3v2 “TIT1” frame, use property “WORK” for ASF “WM/ContentGroupDescription”, use property “COMPILATION” for ID3v2 “TCMP” frame.
- Build system improvements: option WITH_ZLIB, BUILD_TESTING instead of BUILD_TESTS, GNUInstallDirs, FeatureSummary, tests with BUILD_SHARED_LIBS, cross compilation with Buildroot, systems without HAVE_GCC_ATOMIC, Clang.
- Fixed heap-buffer-overflows when handling ASF, APE, FLAC, ID3v2, MP4, MPC tags.
- Fixed detection of invalid file by extension when correct type can be detected by contents.
- Fixed unnecessary creation of map entries in APE and FLAC tags if looked up tag does not exist.
- Fixed parsing of MP4 non-full meta atoms.
- Fixed potential ID3v1 false positive in the presence of an APE tag.
- Fixed ID3v2 version handling for frames embedded in CHAP or CTOC frames.
- Fixed parsing of multiple strings with a single BOM in ID3v2.4.0.
- Fixed several smaller issues reported by clang-tidy.
TagLib 1.12 Release - Feb 16, 2021
- Added support for WinRT.
- Added support for Linux on POWER.
- Added support for classical music tags of iTunes 12.5.
- Added support for file descriptor to FileStream.
- Added support for ‘cmID’, ‘purl’, ‘egid’ MP4 atoms.
- Added support for ‘GRP1’ ID3v2 frame.
- Added support for extensible WAV subformat.
- Enabled FileRef to detect file types based on the stream content.
- Dropped support for Windows 9x and NT 4.0 or older.
- Check for mandatory header objects in ASF files.
- More tolerant handling of RIFF padding, WAV files, broken MPEG streams.
- Improved calculation of Ogg, Opus, Speex, WAV, MP4 bitrates.
- Improved Windows compatibility by storing FLAC picture after comments.
- Fixed numerical genres in ID3v2.3.0 ‘TCON’ frames.
- Fixed consistency of API removing MP4 items when empty values are set.
- Fixed consistency of API preferring COMM frames with no description.
- Fixed OOB read on invalid Ogg FLAC files (CVE-2018-11439).
- Fixed handling of empty MPEG files.
- Fixed parsing MP4 mdhd timescale.
- Fixed reading MP4 atoms with zero length.
- Fixed reading FLAC files with zero-sized seektables.
- Fixed handling of lowercase field names in Vorbis Comments.
- Fixed handling of ‘rate’ atoms in MP4 files.
- Fixed handling of invalid UTF-8 sequences.
- Fixed possible file corruptions when saving Ogg files.
- Fixed handling of non-audio blocks, sampling rates, DSD audio in WavPack files.
- TableOfContentsFrame::toString() improved.
- UserTextIdentificationFrame::toString() improved.
- Marked FileRef::create() deprecated.
- Marked MPEG::File::save() with boolean parameters deprecated, provide overloads with enum parameters.
- Several smaller bug fixes and performance improvements.
TagLib 1.11.1 Release - October 24, 2016
- Fixed binary incompatible change in
TagLib::String
. - Fixed reading ID3v2 CTOC frames with a lot of entries.
- Fixed seeking
ByteVectorStream
from the end.
TagLib 1.11 Release - April 29, 2016
- New API for creating FileRef from IOStream.
- Added support for ID3v2 PCST and WFED frames.
- Added support for pictures in
XiphComment
. - Added
String::clear()
. - Added
FLAC::File::strip()
for removing non-standard tags. - Added alternative functions to
XiphComment::removeField()
. - Added
BUILD_BINDINGS
build option. - Added
ENABLE_CCACHE
build option. - Replaced
ENABLE_STATIC
build option withBUILD_SHARED_LIBS
. - Better handling of duplicate ID3v2 tags in all kinds of files.
- Better handling of duplicate tag chunks in WAV files.
- Better handling of duplicate tag chunks in AIFF files.
- Better handling of duplicate Vorbis comment blocks in FLAC files.
- Better handling of broken MPEG audio frames.
- Better handling of PCM WAV files with a ‘fact’ chunk.
- Better handling of corrupted APE tags.
- Efficient decoding of unsynchronized ID3v2 frames.
- Fixed crash when calling
File::properties()
afterstrip()
. - Fixed crash when parsing certain MPEG files.
- Fixed crash when saving Ogg files.
- Fixed possible file corruptions when saving ASF files.
- Fixed possible file corruptions when saving FLAC files.
- Fixed possible file corruptions when saving MP4 files.
- Fixed possible file corruptions when saving MPEG files.
- Fixed possible file corruptions when saving APE files.
- Fixed possible file corruptions when saving Musepack files.
- Fixed possible file corruptions when saving WavPack files.
- Fixed updating the comment field of Vorbis comments.
- Fixed reading date and time in ID3v2.3 tags.
- Fixed reading APE items with long keys.
- Fixed reading ID3v2 SYLT frames when description is empty.
- Fixed text encoding when saving certain frames in ID3v2.3 tags.
- Fixed updating the size of RIFF files when removing chunks.
- Marked
ByteVector::null
andByteVector::isNull()
deprecated. - Marked
String::null
andString::isNull()
deprecated. - Marked
XiphComment::removeField()
deprecated. - Marked
Ogg::Page::getCopyWithNewPageSequenceNumber()
deprecated. It returns null. - Marked custom integer types deprecated.
- Many smaller bug fixes and performance improvements.
TagLib 1.11 BETA 2 Release - March 4, 2016
- Better handling of PCM WAV files with a ‘fact’ chunk.
- Better handling of corrupted APE tags.
- Efficient decoding of unsynchronized ID3v2 frames.
- Fixed text encoding when saving certain frames in ID3v2.3 tags.
- Fixed updating the size of RIFF files when removing chunks.
- Several smaller bug fixes and performance improvements.
TagLib 1.11 BETA Release - January 30, 2016
- New API for creating FileRef from IOStream.
- Added support for ID3v2 PCST and WFED frames.
- Added support for pictures in
XiphComment
. - Added
String::clear()
. - Added
FLAC::File::strip()
for removing non-standard tags. - Added alternative functions to
XiphComment::removeField()
. - Added
BUILD_BINDINGS
build option. - Added
ENABLE_CCACHE
build option. - Replaced
ENABLE_STATIC
build option withBUILD_SHARED_LIBS
. - Better handling of duplicate ID3v2 tags in all kinds of files.
- Better handling of duplicate tag chunks in WAV files.
- Better handling of duplicate tag chunks in AIFF files.
- Better handling of duplicate Vorbis comment blocks in FLAC files.
- Better handling of broken MPEG audio frames.
- Fixed crash when calling
File::properties()
afterstrip()
. - Fixed crash when parsing certain MPEG files.
- Fixed crash when saving Ogg files.
- Fixed possible file corruptions when saving ASF files.
- Fixed possible file corruptions when saving FLAC files.
- Fixed possible file corruptions when saving MP4 files.
- Fixed possible file corruptions when saving MPEG files.
- Fixed possible file corruptions when saving APE files.
- Fixed possible file corruptions when saving Musepack files.
- Fixed possible file corruptions when saving WavPack files.
- Fixed updating the comment field of Vorbis comments.
- Fixed reading date and time in ID3v2.3 tags.
- Marked
ByteVector::null
andByteVector::isNull()
deprecated. - Marked
String::null
andString::isNull()
deprecated. - Marked
XiphComment::removeField()
deprecated. - Marked
Ogg::Page::getCopyWithNewPageSequenceNumber()
deprecated. It returns null. - Marked custom integer types deprecated.
- Many smaller bug fixes and performance improvements.
TagLib 1.10 Release - November 11, 2015
- New API for the audio length in milliseconds.
- Added new options to the tagwriter example.
- Added support for ID3v2 ETCO and SYLT frames.
- Added support for album artist in PropertyMap API of MP4 files.
- Added support for embedded frames in ID3v2 CHAP and CTOC frames.
- Added support for AIFF-C files.
- Better handling of duplicate ID3v2 tags in MPEG files.
- Allowed generating taglib.pc on Windows.
- Added
ZLIB_SOURCE
build option. - Fixed backwards-incompatible change in TagLib::String when constructing UTF16 strings.
- Fixed crash when parsing certain FLAC files.
- Fixed crash when encoding empty strings.
- Fixed saving of certain XM files on OS X.
- Changed Xiph and APE generic getters to return space-concatenated values.
- Fixed possible file corruptions when removing tags from WAV files.
- Added support for MP4 files with 64-bit atoms in certain 64-bit environments.
- Prevented ID3v2 padding from being too large.
- Fixed crash when parsing corrupted APE files.
- Fixed crash when parsing corrupted WAV files.
- Fixed crash when parsing corrupted Ogg FLAC files.
- Fixed crash when parsing corrupted MPEG files.
- Fixed saving empty tags in WAV files.
- Fixed crash when parsing corrupted Musepack files.
- Fixed possible memory leaks when parsing AIFF and WAV files.
- Fixed crash when parsing corrupted MP4 files.
- Stopped writing empty ID3v2 frames.
- Fixed possible file corruptions when saving WMA files.
- Added TagLib::MP4::Tag::isEmpty().
- Added accessors to manipulate MP4 tags.
- Fixed crash when parsing corrupted WavPack files.
- Fixed seeking MPEG frames.
- Fixed reading FLAC files with zero-sized padding blocks.
- Added support for reading the encoder information of WMA files.
- Added support for reading the codec of WAV files.
- Added support for multi channel WavPack files.
- Added support for reading the nominal bitrate of Ogg Speex files.
- Added support for VBR headers in MPEG files.
- Marked FLAC::File::streamInfoData() deprecated. It returns an empty ByteVector.
- Marked FLAC::File::streamLength() deprecated. It returns zero.
- Fixed possible file corruptions when adding an ID3v1 tag to FLAC files.
- Fixed self-assignment operator in some types.
- Fixed extraction of MP4 tag keys with an empty list.
- Many smaller bug fixes and performance improvements.
TagLib 1.10 BETA Release - August 23, 2015
- New API for the audio length in milliseconds.
- Added support for ID3v2 ETCO and SYLT frames.
- Added support for album artist in PropertyMap API of MP4 files.
- Added support for embedded frames in ID3v2 CHAP and CTOC frames.
- Added support for AIFF-C files.
- Better handling of duplicate ID3v2 tags in MPEG files.
- Allowed generating taglib.pc on Windows.
- Added
ZLIB_SOURCE
build option. - Fixed backwards-incompatible change in TagLib::String when constructing UTF16 strings.
- Fixed crash when parsing certain FLAC files.
- Fixed crash when encoding empty strings.
- Fixed saving of certain XM files on OS X.
- Changed Xiph and APE generic getters to return space-concatenated values.
- Fixed possible file corruptions when removing tags from WAV files.
- Added support for MP4 files with 64-bit atoms in certain 64-bit environments.
- Prevented ID3v2 padding from being too large.
- Fixed crash when parsing corrupted APE files.
- Fixed crash when parsing corrupted WAV files.
- Fixed crash when parsing corrupted Ogg FLAC files.
- Fixed crash when parsing corrupted MPEG files.
- Fixed saving empty tags in WAV files.
- Fixed crash when parsing corrupted Musepack files.
- Fixed possible memory leaks when parsing AIFF and WAV files.
- Fixed crash when parsing corrupted MP4 files.
- Stopped writing empty ID3v2 frames.
- Fixed possible file corruptions when saving WMA files.
- Added TagLib::MP4::Tag::isEmpty().
- Added accessors to manipulate MP4 tags.
- Fixed crash when parsing corrupted WavPack files.
- Fixed seeking MPEG frames.
- Fixed reading FLAC files with zero-sized padding blocks.
- Added support for reading the encoder information of WMA files.
- Added support for reading the codec of WAV files.
- Added support for multi channel WavPack files.
- Added support for reading the nominal bitrate of Ogg Speex files.
- Added support for VBR headers in MPEG files.
- Marked FLAC::File::streamInfoData() deprecated. It returns an empty ByteVector.
- Marked FLAC::File::streamLength() deprecated. It returns zero.
- Fixed possible file corruptions when adding an ID3v1 tag to FLAC files.
- Many smaller bug fixes and performance improvements.
TagLib 1.9.1 Release - October 8, 2013
- Fixed binary incompatible change in
TagLib::Map
andTagLib::List
. - Fixed constructing
TagLib::String
fromTagLiB::ByteVector
. - Fixed compilation on MSVC with the
/Zc:wchar_t-
option. - Fixed detecting of RIFF files with invalid chunk sizes.
- Added
TagLib::MP4::PropertyMap::codec()
.
TagLib 1.9 Release - October 6, 2013
- Added support for the Ogg Opus file format.
- Added support for INFO tags in WAV files.
- Changed FileStream to use Windows file API.
- Included taglib-config.cmd script for Windows.
- New ID3v1::Tag methods for working directly with genre numbers.
- New MPEG::File methods for checking which tags are saved in the file.
- Added support for the PropertyMap API to ASF and MP4 files.
- Added MusicBrainz identifiers to the PropertyMap API.
- Allowed reading of MP4 cover art without an explicitly specified format.
- Better parsing of corrupted FLAC files.
- Fixed saving of PropertyMap comments without description into ID3v2 tags.
- Fixed crash when parsing certain XM files.
- Fixed compilation of unit test with clang.
- Better handling of files that can’t be open or have read-only permissions.
- Improved atomic reference counting.
- New hookable API for debug messages.
- More complete Windows install instructions.
- Many smaller bug fixes and performance improvements.
TagLib 1.8 Release - September 5, 2012
Changes in 1.8 final:
- Added support for OWNE ID3 frames.
- Changed key validation in the new PropertyMap API.
- ID3v1::Tag::setStringHandler will no londer delete the previous handler, the caller is responsible for this.
- File objects will also no longer delete the passed IOStream objects. It should be done in the caller code after the File object is no longer used.
- Added ID3v2::Tag::setLatin1StringHandler for custom handling of latin1-encoded text in ID3v2 frames.
- Fixed validation of ID3v2 frame IDs (IDs with ‘0’ were ignored).
Changes in 1.8 beta:
- New API for accessing tags by name.
- New abstract I/O stream layer to allow custom I/O handlers.
- Support for writing ID3v2.3 tags.
- Support for various module file formats (MOD, S3M, IT, XM).
- Support for MP4 and ASF is now enabled by default.
- Started using atomic int operations for reference counting.
- Added methods for checking if WMA and MP4 files are DRM-protected.
- Added taglib_free to the C bindings.
- New method to allow removing pictures from FLAC files.
- Support for reading audio properties from ALAC and Musepack SV8 files.
- Added replay-gain information to Musepack audio properties.
- Support for APEv2 binary tags.
- Many AudioProperties subclasses now provide information about the total number of samples.
- Various small bug fixes.
TagLib 1.8 BETA Release - July 14, 2012
- New API for accessing tags by name.
- New abstract I/O stream layer to allow custom I/O handlers.
- Support for writing ID3v2.3 tags.
- Support for various module file formats (MOD, S3M, IT, XM).
- Support for MP4 and ASF is now enabled by default.
- Started using atomic int operations for reference counting.
- Added methods for checking if WMA and MP4 files are DRM-protected.
- Added taglib_free to the C bindings.
- New method to allow removing pictures from FLAC files.
- Support for reading audio properties from ALAC and Musepack SV8 files.
- Added replay-gain information to Musepack audio properties.
- Support for APEv2 binary tags.
- Many AudioProperties subclasses now provide information about the total number of samples.
- Various small bug fixes.
TagLib 1.7.2 Release - Apr 20, 2012
- Fixed division by zero while parsing corrupted MP4 files (CVE-2012-2396).
- Fixed compilation on Haiku.
TagLib 1.7.1 Release - March 17, 2012
- Improved parsing of corrupted WMA, RIFF and OGG files.
- Fixed a memory leak in the WMA parser.
- Fixed a memory leak in the FLAC parser.
- Fixed a possible division by zero in the APE parser.
- Added detection of TTA2 files.
- Fixed saving of multiple identically named tags to Vorbis Comments.
TagLib 1.7 Release - March 12, 2011
- Support for reading/writing tags from Monkey’s Audio files.
- Support for reading/writing embedded pictures from WMA files.
- Support for reading/writing embedded pictures from FLAC files
- Implemented
APE::Tag::isEmpty()
to check for all APE tags, not just the basic ones. - Added reading of WAV audio length.
- Exposed FLAC MD5 signature of the uncompressed audio stream via
FLAC::Properties::signature()
. - Added function
ByteVector::toHex()
for hex-encoding of byte vectors. - WavPack reader now tries to get the audio length by finding the final block, if the header doesn’t have the information.
- Fixed a memory leak in the ID3v2.2 PIC frame parser.
- Fixed writing of RIFF files with even chunk sizes.
- Fixed compilation on MSVC 2010.
- Removed support for building using autoconf/automake.
- API docs can be now built using
make docs
. - Fixed bitrate calculation for WAV files.
TagLib 1.6.3 Release - April 19, 2010
- Fixed definitions of the
TAGLIB_WITH_MP4
andTAGLIB_WITH_ASF
macros. - Fixed upgrading of ID3v2.3 genre frame with ID3v1 code 0 (Blues).
- New method
int String::toInt(bool *ok)
which can return whether the conversion to a number was successful. - Fixed parsing of incorrectly written lengths in ID3v2 (affects mainly compressed frames).
TagLib 1.6.2 Release - April 9, 2010
- Read Vorbis Comments from the first FLAC metadata block, if there are multipe ones.
- Fixed a memory leak in FileRef’s OGA format detection.
- Fixed compilation with the Sun Studio compiler.
- Handle WM/TrackNumber attributes with DWORD content in WMA files.
- More strict check if something is a valid MP4 file.
- Correctly save MP4 int-pair atoms with flags set to 0.
- Fixed compilation of the test runner on Windows.
- Store ASF attributes larger than 64k in the metadata library object.
- Ignore trailing non-data atoms when parsing MP4 covr atoms.
- Don’t upgrade ID3v2.2 frame TDA to TDRC.
TagLib 1.6.1 Release - October 31, 2009
- Better detection of the audio codec of .oga files in
FileRef
. - Fixed saving of Vorbis comments to Ogg FLAC files. TagLib tried to include the Vorbis framing bit, which is only correct for Ogg Vorbis
- Public symbols now have explicitly set visibility to “default” on GCC.
- Added missing exports for static ID3v1 functions.
- Fixed a typo in taglib_c.pc
- Fixed a failing test on ppc64.
- Support for binary ‘covr’ atom in MP4 files. TagLib 1.6 treated them as text atoms, which corrupted them in some cases.
- Fixed ID3v1-style genre to string conversion in MP4 files.
TagLib 1.6 Release - September 13, 2009
- New CMake option to build a static version -
ENABLE_STATIC
. - Added support for disabling dllimport/dllexport on Windows using the
TAGLIB_STATIC
macro. - Support for parsing the obsolete ‘gnre’ MP4 atom.
- New cpp macros
TAGLIB_WITH_MP4
andTAGLIB_WITH_ASF
to determin if TagLib was built with MP4 / ASF support. - Split Ogg packets larger than 64k into multiple pages.
- TagLib can now use FLAC padding block.
- ID3v2.2 frames are now not incorrectly saved.
- Support for ID3v2.2 PIC frames.
- Fixed a bug in
ByteVectorList::split()
. XiphComment::year()
now falls back to YEAR if DATE doesn’t exist andXiphComment::year()
falls back to TRACKNUM if TRACKNUMBER doesn’t exist.- Improved ID3v2.3 genre parsing.
- Better checking of corrupted ID3v2 APIC data.
- Bitrate calculating using the Xing header now uses floating point numbers.
- New TagLib::String method
rfind()
. - Added support for MP4 file format with iTunes-style metadata
- Added support for ASF (WMA) file format.
- Fixed crash when saving a Locator APEv2 tag.
- Fixed a possible crash in the non-const version of
String::operator[]
and inString::operator+=
. - Added support for PRIV ID3v2 frames.
- Empty ID3v2 genres are no longer treated as numeric ID3v1 genres.
- Added support for the POPM (rating / play count) ID3v2 frame.
- Generic RIFF file format support:
- Support for AIFF files with ID3v2 tags.
- Support for WAV files with ID3v2 tags.
- Fixed crash on handling unsupported ID3v2 frames, e.g. on encrypted frames.
- Fixed overflow while calculating bitrate of FLAC files with a very high bitrate.
TagLib 1.5 Release - February 21, 2008
- Support for Mac OS X and Microsoft Windows
- Distributed under the MPL (in addition to the previous LGPL license)
- Added support for Speex files
- Added support for TrueAudio files
- Added support for WavPack files
- Added support for ID3v2 general encapsulated object frames
- Added support for ID3v2 unsynchronized lyrics frames
- Added support for ID3v2 URL frames
- Propper exports of all public classes / functions
- Updated the APE::Item API to work with value lists
- Added support to the FileRef class for new Xiph (Ogg) extensions
- Made the samples per frame for MPEG headers accessible
- Made MP3 Xing headers accessible
- Prevent invalid encodings from being written to ID3v1 tags
- Non-Latin1 ID3v2 text frames are automatically converted to UTF-8 on write (if they are not explicitly set to UTF-16)
- Added support for reading ID3v2.2/3 unsynchronized tags
- Made it possible to search for ID3v2 comment frames by description
- Fixed a number of bugs in ID3v2 relative volume adjustment reading and writing
- Added work arounds for iTunes writing invalid ID3v2 frame lengths
- Added work arounds for iTunes not being able to correctly parse numerical ID3v2 genres
- Added work arounds for iTunes putting non-text information in ID3v2 comment frames
- Added a function to export strings to std::wstring
- Added a function to check ASCII compatibility of strings
- Added a function to check Latin1 compatibility of strings
TagLib 1.4 Release - July 27, 2005
- Added a package-config file
- Added support for plugging in file type resolvers to make it easier to use native mime type resolution systems and to add support for additional file formats
- Fixed a memory leak in APE items
- Fixed a crash when requesting the text of an empty APE item
- Added a README noting the Ruby and Python bindings
- Added the ability to save mp3 tags using the save mask without discarding those tags that are not part of the mask
- Fixed the misspelling of “A Cappella”
- Implemented support for the ID3v2 frame flag for discarding frames on tag alteration
- Use the above flag for ID3v2 frames that are discarded because they are no longer supported in ID3v2.4 (which TagLib uses). This allows for these tags to still be handled by library users if desired
- Fix memory corruption (deleting a no longer valid iterator) when removing a frame from an ID3v2 tag
- Make it possible to read and modify the descriptions of images in attached picture frames of ID3v2 tags
- Introduced an argument for limiting the number of fields that will
be created usign
ByteVectorList::split()
- Significantly unbroke the relative volume adjustment ID3v2 frame’s API. It now properly supports multiple volume fields in the same frame
- Added support for reading the comment portion of “Xiph” tags (used in Ogg Vorbis and FLAC) from the “COMMENT” field rather than only from the “DESCRIPTION” field mentioned in the spec
- Added support for Ogg FLAC v1.1.1
- Added prepend methods to the
List<T>
class - Added support for UTF-16 little endian strings as used in some tagging formats
- Fixed or implemented roughly 35 bug or wishlist items relative to 1.3.1
TagLib 1.3.1 Release - November 7, 2004
- Fixed Ogg Vorbis length detection on AMD-64
- Fixed crash on some invalid MP3s (regression from 1.2 to 1.3) where corruped tags caused crashes or out of memory errors
- Clear the ID3v1 track number when attempting to set it to a value greater than 255 (8-bit value)
- Fixed crash in invalid APE tags where the number of tag items didn’t match up with the number actually present
- Added other additional sanity checks to the APE parsing code that should make it more robust
- Fixed Makefile problem that caused the
apeitem.h
header to not be installed and made it impossible to use the APE API directly
TagLib 1.3 Release - September 10, 2004
- Added support for APE tags
- Added support for MPC files
- Added support for APE tags in MP3 files
- Added support for compressed ID3v2 frames
- Added support for uniuque file identifier frames in ID3v2
- Added checks for several potential divide by zero (SIGFPE) cases
- Fixed support for custom text frames
TagLib 1.2 Release - July 7, 2004
New Features:
- Add support for FLAC data in Ogg containers (“Ogg FLAC” files)
- Added support for relative volume adjustment (RVA2) ID3v2 frames
- Added support for attached picture (APIC) ID3v2 frames
- Return a bool on
File::save()
to indicate success or failure - Implemented support for reading ID3v2 frame header flags
- Return false from isValid() for FLAC files that are not parsed properly
- Move the Vorbis classes into the Ogg namespace (binary and source compatibility preserved)
- Added a convenience function fo accessing a list of ID3v2 frames of
a certain ID using
ID3v2::Tag::frameList(const ByteVector &frameID)
- Add access to the ID3v1, ID3v2 and XiphComments of FLAC files to the public API
ByteVector
optimizations to speed up copying- Add
find()
anderase()
methods toMap
- Added iterators and index operators to the string class
- Plays nicely with ID3v2.4 tags generated by libid3tag
Bugs Fixed:
- Do not append a
XiphComment
framing bit to XiphComments in FLAC files that have Xiph-style comments. Though required by the spec, this renders the files unplayable on some players - Fixed setting the language for ID3v2 comments to empty by default. This caused invalid comments to be written in the case that no comment previously existed
- Fixed the spelling of “Psychedelic” in the ID3v1 genre list
- The correct number of ID3v1 genres is 148, not 147. This caused Synthpop to not show up in the list
- Fixed typo in the recording date frame ID – it was previously listed as “TRDC” where “TDRC” is the correct ID. TagLib seamlessly corrects this error on subsequent saves to affected tags
- Fixed reading / parsing of ID3v2 genre tags as a null separated list rather than ID3v2.3-style ‘/’ separated lists with the ID3v1 genre in parenthesis
- Properly handle extended header parsing, even if the extended header begins with null bytes. Previously this was being detected as padding
- Fix a divide by zero that happened in the case of an MP3 file with a Xing header but no actual MPEG frames
- Delete ID3 tags from memory (by default) when they’re stripped from files
TagLib 1.1 Release - April 4, 2004
- Added ID3v2.2 support (previous support was for ID3v2.3 and ID3v2.4) since iTunes seems to still use this very old version of the ID3v2 standard
- Fixed an API bug in
MPEG::File
that made it difficult to override the default frame factory - Make it possible to override the default string handler for ID3v1 tags. This makes it possible for applications to provide decoders that work with something other than ISO-8859-1 ID3v1 tags
- Switch from passing around a bool indicating whether to use synch-safe ints or not and pass the ID3v2 revision number. This is more flexible and general purpose
- Optimizations in the toolkit that make several
ByteVector
operations faster (and speeds up tag parsing and rendering by about 20%) - Fixed rendering of UTF-16 in ID3v2 tags
- Added FLAC support to the C API
TagLib 1.0 Release - January 22, 2004
- Initial (non-beta) release