21#ifndef TAGLIB_EBMLUTILS_H
22#define TAGLIB_EBMLUTILS_H
23#ifndef DO_NOT_DOCUMENT
40 std::unique_ptr<Element> findElement(
41 File &file, Element::Id
id,
offset_t maxOffset,
offset_t maxScanOffset = -1);
48 std::unique_ptr<Element> findNextElement(
51 template <
int maxSizeLength>
52 unsigned int VINTSizeLength(uint8_t firstByte);
54 std::pair<unsigned int, uint64_t> readVINT(File &file);
56 std::pair<unsigned int, uint64_t> parseVINT(
const ByteVector &buffer);
58 ByteVector renderVINT(uint64_t number,
int minSizeLength);
60 unsigned long long randomUID();
62 constexpr int minSize(uint64_t data)
70 if(data <= 0xFFFFFFFu)
72 if(data <= 0x7FFFFFFFFu)
77 constexpr int idSize(Element::Id
id)
79 const auto uintId =
static_cast<unsigned int>(id);
84 if(uintId <= 0xFFFFFF)
90 constexpr bool isUnknownSize(
unsigned int sizeLength, uint64_t dataSize)
92 if(sizeLength == 0 || sizeLength > 8) {
96 const unsigned int numDataBits = sizeLength * 8 - sizeLength;
97 const uint64_t mask = (1ULL << numDataBits) - 1;
98 return (dataSize & mask) == mask;
A namespace for all TagLib related classes and functions.
Definition apefile.h:41
off_t offset_t
Definition taglib.h:64