manuaudioandUrs Fleisch 83e5427fe0 Opus: do not convert out of range properties to int
Opus is the one worth reading twice: its granule clock is fixed at
48 kHz, so unlike the other formats no absurd declared sample rate is
needed. A 64 bit granule position alone is enough. At 2^62 samples the
millisecond length is ~9.6e16 and the conversion to int is undefined:

  taglib/ogg/opus/opusproperties.cpp:156:39: runtime error: 9.60768e+16
  is outside the range of representable values of type 'int'

The bitrate on the next line has the same shape as the other formats,
but because the divisor cannot be made arbitrarily small at a fixed
48 kHz it needs a stream of several megabytes to overflow, so I have
not built a test file for it. It is guarded for consistency rather than
on demonstrated evidence.

Leave the field at its default rather than converting.

One report 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)
2026-08-15 18:18:23 +02:00
2026-06-24 05:27:17 +02:00
2026-07-19 19:58:28 +02:00
2022-10-24 07:06:23 +02:00
2026-08-14 06:47:05 +02:00
2015-05-18 11:31:55 +02:00
2023-10-08 05:58:33 +02:00
2023-09-16 08:41:01 +02:00
2026-07-19 19:58:28 +02:00
2026-07-12 20:16:12 +02:00
2024-01-04 17:18:23 +01:00
2026-02-18 05:15:14 +01:00

TagLib

Build Status

TagLib Audio Metadata Library

https://taglib.org/

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.

S
Description
No description provided
Readme
15 MiB
Languages
C++ 96.7%
CMake 2%
C 0.9%
Logos 0.4%