1 #ifndef TAG_PARSER_MATROSKACONTAINER_H
2 #define TAG_PARSER_MATROSKACONTAINER_H
10 #include "../genericcontainer.h"
19 class MatroskaSeekInfo;
20 class MatroskaEditionEntry;
30 std::uint64_t maxIdLength()
const;
31 std::uint64_t maxSizeLength()
const;
32 const std::vector<std::unique_ptr<MatroskaSeekInfo>> &seekInfos()
const;
34 static std::uint64_t maxFullParseSize();
35 void setMaxFullParseSize(std::uint64_t maxFullParseSize);
36 const std::vector<std::unique_ptr<MatroskaEditionEntry>> &editionEntires()
const;
38 std::size_t chapterCount()
const override;
41 std::size_t attachmentCount()
const override;
46 virtual bool supportsTitle()
const override;
47 virtual std::size_t segmentCount()
const override;
49 void reset()
override;
52 void internalParseHeader(
Diagnostics &diag)
override;
54 void internalParseTracks(
Diagnostics &diag)
override;
55 void internalParseChapters(
Diagnostics &diag)
override;
56 void internalParseAttachments(
Diagnostics &diag)
override;
61 void readTrackStatisticsFromTags(
Diagnostics &diag);
63 std::uint64_t m_maxIdLength;
64 std::uint64_t m_maxSizeLength;
66 std::vector<EbmlElement *> m_tracksElements;
67 std::vector<EbmlElement *> m_segmentInfoElements;
68 std::vector<EbmlElement *> m_tagsElements;
69 std::vector<EbmlElement *> m_chaptersElements;
70 std::vector<EbmlElement *> m_attachmentsElements;
71 std::vector<std::unique_ptr<MatroskaSeekInfo>> m_seekInfos;
72 std::vector<std::unique_ptr<MatroskaEditionEntry>> m_editionEntries;
73 std::vector<std::unique_ptr<MatroskaAttachment>> m_attachments;
74 std::size_t m_segmentCount;
75 static std::uint64_t m_maxFullParseSize;
91 return m_maxSizeLength;
117 return m_maxFullParseSize;
134 return m_editionEntries;
139 return m_attachments.at(index).get();
144 return m_attachments.size();
154 return m_segmentInfoElements.size();
159 #endif // MATROSKACONTAINER_H