mirror of
https://github.com/taglib/taglib.git
synced 2026-10-29 19:38:48 -04:00
ab3526af2e89e3204fdd1092ae764a87c1c59b4d
EBML::minSize() chose the size length for an element's data size with <= at each limit, so a size of exactly 2^(7n) - 1 (127, 16383, 2097151, ...) was rendered in n bytes with every value bit set. That is the reserved "unknown size" value (RFC 8794 section 6.2), so a reader no longer knows where the element ends. A tag value of exactly 127 bytes, for example, saves without error but reads back as an empty string. minSize() also returned 0 for any size from 0x7FFFFFFFF (32 GiB) up, so renderVINT() wrote a size of zero bytes. Sizes up to 2^56 - 2 now use size lengths 6 to 8; larger sizes still return 0, as no size length can hold them. testElementSizeLength checks minSize() on either side of the limit of each size length from 1 to 8 bytes. testSaveElementSizeAtLengthLimit saves titles of 126 to 128 and 16382 to 16384 bytes to no-tags.mka and reads them back.
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%