3#include "../diagnostics.h"
4#include "../exceptions.h"
5#include "../mediaformat.h"
7#include <c++utilities/io/binaryreader.h>
32 reader.stream()->seekg(1, ios_base::cur);
39 std::uint8_t spsEntryCount = reader.readByte() & 0x0f;
40 std::uint8_t ignoredSpsEntries = 0;
42 for (; spsEntryCount; --spsEntryCount) {
49 reader, maxSize > numeric_limits<std::uint32_t>::max() ? numeric_limits<std::uint32_t>::max() :
static_cast<std::uint32_t
>(maxSize));
66 std::uint8_t ppsEntryCount = reader.readByte();
67 std::uint8_t ignoredPpsEntries = 0;
69 for (; ppsEntryCount; --ppsEntryCount) {
76 reader, maxSize > numeric_limits<std::uint32_t>::max() ? numeric_limits<std::uint32_t>::max() :
static_cast<std::uint32_t
>(maxSize));
93 if (ignoredSpsEntries || ignoredPpsEntries) {
96 "Ignored ", ignoredSpsEntries,
" SPS entries and ", ignoredPpsEntries,
" PPS entries. This AVC config is likely just not supported."),
97 "parsing AVC config");
The Diagnostics class is a container for DiagMessage.
The class inherits from std::exception and serves as base class for exceptions thrown by the elements...
The exception that is thrown when the data to be parsed is truncated and therefore can not be parsed ...
Contains all classes and functions of the TagInfo library.
std::vector< SpsInfo > spsInfos
void parse(CppUtilities::BinaryReader &reader, std::uint64_t maxSize, Diagnostics &diag)
Parses the AVC configuration using the specified reader.
std::uint8_t profileIndication
std::uint8_t levelIndication
std::uint8_t profileCompat
std::vector< PpsInfo > ppsInfos
std::uint8_t naluSizeLength
static constexpr std::uint16_t minSize
static constexpr std::uint16_t minSize