mirror of
https://github.com/taglib/taglib.git
synced 2026-08-27 12:47:01 -04:00
4c3e3cf1b8a201733c5203d348e6eb275aca0e8a
STREAMINFO carries the total sample count in a 36 bit field and the sample rate in a 20 bit one, so a structurally valid file can declare 2^36-1 frames at 1 Hz. The millisecond length is then ~6.9e13 and the conversion to int is undefined: taglib/flac/flacproperties.cpp:136:35: runtime error: 6.87195e+13 is outside the range of representable values of type 'int' The bitrate on the next line is reachable the other way round, with a short stream at a high declared rate making the divisor tiny: taglib/flac/flacproperties.cpp:137:35: runtime error: 1.75922e+10 is outside the range of representable values of type 'int' Leave the field at its default rather than converting. Two reports before the change, none after. The 23 FLAC, APE, Ogg Vorbis, Opus and Speex files in tests/data report identical channels, sample rate, bitrate and length before and after, and the suite runs 576 tests either way. Assisted-By: Claude Code (Claude Opus 5)
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.7%
CMake
2%
C
0.9%
Logos
0.4%