mirror of
https://github.com/taglib/taglib.git
synced 2026-07-14 15:21:31 -04:00
eb698de6e5ca7904a481ba92cc143da281cd49df
In matroska an element data size of a VINT with all bits 1 means the data size is unknown. Unknown data size can only apply to Master Elements. Unknown sized elements are described in https://datatracker.ietf.org/doc/rfc8794/ section 6.2 It gives the following 5 conditions for detecting the end of an unknown sized element: * Any EBML Element that is a valid Parent Element of the Unknown- Sized Element according to the EBML Schema, Global Elements excluded. * Any valid EBML Element according to the EBML Schema, Global Elements excluded, that is not a Descendant Element of the Unknown-Sized Element but shares a common direct parent, such as a Top-Level Element. * Any EBML Element that is a valid Root Element according to the EBML Schema, Global Elements excluded. * The end of the Parent Element with a known size has been reached. * The end of the EBML Document, either when reaching the end of the file or because a new EBML Header started. In this patch we use the higher level maxOffset to determine the maximum data size for the element, which matches the fourth condition, but is incomplete without the other four methods. As only Segment and Cluster elements of Matroska files are allowed to use unknown size length and TagLib does not process Cluster elements, this should be sufficient. --------- Signed-off-by: Anthony Brandon <anthony.brandon@gmail.com> Co-authored-by: Urs Fleisch <ufleisch@users.sourceforge.net>
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.
Description
Languages
C++
96.6%
CMake
2.1%
C
0.9%
Logos
0.4%