mirror of
https://github.com/taglib/taglib.git
synced 2026-10-31 20:38:48 -04:00
53a80ba1664b61859b03fe2225f26aa3f8433f16
properties() merges the values of all frames mapping to the same key, in frame order, so a key can be spread over several frames, e.g. two comments without a description in different languages give COMMENT=["hello", "hallo"]. setProperties() only kept a frame if its own values equal the whole requested list, so none of these frames was kept, and the list was then written as a single TXXX:COMMENT frame. This made setProperties(properties()) lossy: the COMM frames and their languages were replaced by a frame no comment reader looks for. Before deciding which frames to delete, merge the values of the frames holding a single key in frameList() order, as properties() does. If the requested values for a key equal the merged ones, keep all of its frames and do not create a new frame for it. TIPL and TMCL frames, and every key whose values changed, are handled as before. testSetPropertiesKeepsSpreadFrames covers the identity round trip on two COMM frames, a request matching only one of them (kept as before), a changed list (still a single TXXX), a key held by a TXXX and a COMM frame (compared in frame order, not frame ID order), and a save and reread of an MPEG file.
TagLib
TagLib Audio Metadata Library
TagLib is a library for reading and editing the metadata of several popular audio formats. Currently, it supports various metadata containers such as ID3v1, ID3v2 and Vorbis comments for MP3, MP4, AAC, Ogg, Opus, FLAC, Speex, APE, MPC, WavPack, WAV, AIFF, TrueAudio, Matroska, WebM, ASF, WMA, DSF, DFF and tracker (MOD, XM, S3M, IT) files.
TagLib is distributed under the GNU Lesser General Public License (LGPL) and Mozilla Public License (MPL). Essentially that means that it may be used in proprietary applications, but if changes are made to TagLib they must be contributed back to the project. Please review the licenses if you are considering using TagLib in your project.
Languages
C++
96.5%
CMake
1.9%
C
0.8%
Python
0.5%
Logos
0.3%