10 #include <unordered_set> 21 class MatroskaContainer;
64 void parseContainerFormat();
68 void parseAttachments();
69 void parseEverything();
80 const char *mimeType()
const;
81 uint64 containerOffset()
const;
82 uint64 paddingSize()
const;
87 std::vector<AbstractChapter *> chapters()
const;
88 bool areChaptersSupported()
const;
91 std::vector<AbstractAttachment *> attachments()
const;
92 bool areAttachmentsSupported()
const;
95 std::size_t trackCount()
const;
96 std::vector<AbstractTrack *> tracks()
const;
100 std::string technicalSummary()
const;
101 bool areTracksSupported()
const;
104 bool hasId3v1Tag()
const;
105 bool hasId3v2Tag()
const;
106 bool hasAnyTag()
const;
108 const std::vector<std::unique_ptr<Id3v2Tag> > &id3v2Tags()
const;
109 void tags(std::vector<Tag *> &tags)
const;
110 std::vector<Tag *> tags()
const;
112 const std::vector<std::unique_ptr<MatroskaTag> > &matroskaTags()
const;
114 bool areTagsSupported()
const;
118 TagUsage id3v2usage =
TagUsage::Always,
bool id3InitOnCreate =
false,
bool id3TransferValuesOnRemoval =
true,
bool mergeMultipleSuccessiveId3v2Tags =
true,
119 bool keepExistingId3v2version =
true, byte id3v2MajorVersion = 3,
const std::vector<TagTarget> &requiredTargets = std::vector<TagTarget>());
120 bool removeId3v1Tag();
123 bool removeAllId3v2Tags();
125 void removeTag(
Tag *tag);
126 void removeAllTags();
127 void mergeId3v2Tags();
131 bool removeVorbisComment();
134 bool haveRelatedObjectsNotifications()
const;
138 void clearParsingResults();
141 const std::string &saveFilePath()
const;
142 void setSaveFilePath(
const std::string &saveFilePath);
143 bool isForcingFullParse()
const;
144 void setForceFullParse(
bool forceFullParse);
145 bool isForcingRewrite()
const;
146 void setForceRewrite(
bool forceRewrite);
147 size_t minPadding()
const;
148 void setMinPadding(
size_t minPadding);
149 size_t maxPadding()
const;
150 void setMaxPadding(
size_t maxPadding);
151 size_t preferredPadding()
const;
152 void setPreferredPadding(
size_t preferredPadding);
155 bool forceTagPosition()
const;
156 void setForceTagPosition(
bool forceTagPosition);
159 bool forceIndexPosition()
const;
160 void setForceIndexPosition(
bool forceTagPosition);
163 virtual void invalidated();
174 std::streamoff m_containerOffset;
175 uint64 m_paddingSize;
176 bool m_actualExistingId3v1Tag;
177 std::list<std::streamoff> m_actualId3v2TagOffsets;
178 std::unique_ptr<AbstractContainer> m_container;
182 std::unique_ptr<AbstractTrack> m_singleTrack;
186 std::unique_ptr<Id3v1Tag> m_id3v1Tag;
187 std::vector<std::unique_ptr<Id3v2Tag> > m_id3v2Tags;
194 std::string m_saveFilePath;
195 bool m_forceFullParse;
199 size_t m_preferredPadding;
201 bool m_forceTagPosition;
203 bool m_forceIndexPosition;
211 return m_containerParsingStatus;
222 return m_containerFormat;
260 return m_containerOffset;
268 return m_paddingSize;
276 return m_tagsParsingStatus;
284 return m_tracksParsingStatus;
297 return m_singleTrack ? 1 : (m_container ? m_container->trackCount() : 0);
305 return m_chaptersParsingStatus;
313 return m_attachmentsParsingStatus;
321 return m_id3v1Tag !=
nullptr;
329 return !m_id3v2Tags.empty();
341 return m_id3v1Tag.get();
362 return m_saveFilePath;
396 return m_container.get();
409 return m_forceFullParse;
419 m_forceFullParse = forceFullParse;
427 return m_forceRewrite;
435 m_forceRewrite = forceRewrite;
501 return m_preferredPadding;
521 return m_tagPosition;
546 return m_forceTagPosition;
566 return m_indexPosition;
586 return m_forceIndexPosition;
601 #endif // MEDIAINFO_H
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.