20 class MatroskaContainer;
63 void parseContainerFormat();
67 void parseAttachments();
68 void parseEverything();
79 const char *mimeType()
const;
80 uint64 containerOffset()
const;
81 uint64 paddingSize()
const;
86 std::vector<AbstractChapter *> chapters()
const;
87 bool areChaptersSupported()
const;
90 std::vector<AbstractAttachment *> attachments()
const;
91 bool areAttachmentsSupported()
const;
94 std::size_t trackCount()
const;
95 std::vector<AbstractTrack *> tracks()
const;
98 bool areTracksSupported()
const;
101 bool hasId3v1Tag()
const;
102 bool hasId3v2Tag()
const;
103 bool hasAnyTag()
const;
105 const std::vector<std::unique_ptr<Id3v2Tag> > &id3v2Tags()
const;
106 void tags(std::vector<Tag *> &tags)
const;
107 std::vector<Tag *> tags()
const;
109 const std::vector<std::unique_ptr<MatroskaTag> > &matroskaTags()
const;
111 bool areTagsSupported()
const;
115 TagUsage id3v2usage =
TagUsage::Always,
bool id3InitOnCreate =
false,
bool id3TransferValuesOnRemoval =
true,
bool mergeMultipleSuccessiveId3v2Tags =
true,
116 bool keepExistingId3v2version =
true, byte id3v2MajorVersion = 3,
const std::vector<TagTarget> &requiredTargets = std::vector<TagTarget>());
117 bool removeId3v1Tag();
120 bool removeAllId3v2Tags();
122 void removeTag(
Tag *tag);
123 void removeAllTags();
124 void mergeId3v2Tags();
128 bool removeVorbisComment();
131 bool haveRelatedObjectsNotifications()
const;
135 void clearParsingResults();
138 const std::string &saveFilePath()
const;
139 void setSaveFilePath(
const std::string &saveFilePath);
140 bool isForcingFullParse()
const;
141 void setForceFullParse(
bool forceFullParse);
142 bool isForcingRewrite()
const;
143 void setForceRewrite(
bool forceRewrite);
144 size_t minPadding()
const;
145 void setMinPadding(
size_t minPadding);
146 size_t maxPadding()
const;
147 void setMaxPadding(
size_t maxPadding);
148 size_t preferredPadding()
const;
149 void setPreferredPadding(
size_t preferredPadding);
152 bool forceTagPosition()
const;
153 void setForceTagPosition(
bool forceTagPosition);
156 bool forceIndexPosition()
const;
157 void setForceIndexPosition(
bool forceTagPosition);
160 virtual void invalidated();
171 std::streamoff m_containerOffset;
172 uint64 m_paddingSize;
173 bool m_actualExistingId3v1Tag;
174 std::list<std::streamoff> m_actualId3v2TagOffsets;
175 std::unique_ptr<AbstractContainer> m_container;
179 std::unique_ptr<AbstractTrack> m_singleTrack;
183 std::unique_ptr<Id3v1Tag> m_id3v1Tag;
184 std::vector<std::unique_ptr<Id3v2Tag> > m_id3v2Tags;
191 std::string m_saveFilePath;
192 bool m_forceFullParse;
196 size_t m_preferredPadding;
198 bool m_forceTagPosition;
200 bool m_forceIndexPosition;
208 return m_containerParsingStatus;
219 return m_containerFormat;
257 return m_containerOffset;
265 return m_paddingSize;
273 return m_tagsParsingStatus;
281 return m_tracksParsingStatus;
294 return m_singleTrack ? 1 : 0 + m_container->trackCount();
302 return m_chaptersParsingStatus;
310 return m_attachmentsParsingStatus;
318 return m_id3v1Tag !=
nullptr;
326 return !m_id3v2Tags.empty();
338 return m_id3v1Tag.get();
359 return m_saveFilePath;
378 m_saveFilePath = saveFilePath;
393 return m_container.get();
406 return m_forceFullParse;
416 m_forceFullParse = forceFullParse;
424 return m_forceRewrite;
432 m_forceRewrite = forceRewrite;
459 m_minPadding = minPadding;
487 m_maxPadding = maxPadding;
498 return m_preferredPadding;
508 m_preferredPadding = preferredPadding;
517 return m_tagPosition;
532 m_tagPosition = tagPosition;
542 return m_forceTagPosition;
552 m_forceTagPosition = forceTagPosition;
562 return m_indexPosition;
572 m_indexPosition = indexPosition;
582 return m_forceIndexPosition;
592 m_forceIndexPosition = forceIndexPosition;
597 #endif // MEDIAINFO_H
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.