1 #ifndef MEDIA_ABSTRACTCONTAINER_H 2 #define MEDIA_ABSTRACTCONTAINER_H 8 #include <c++utilities/io/binaryreader.h> 9 #include <c++utilities/io/binarywriter.h> 10 #include <c++utilities/chrono/timespan.h> 11 #include <c++utilities/chrono/datetime.h> 24 class AbstractChapter;
25 class AbstractAttachment;
39 std::iostream &stream();
40 void setStream(std::iostream &stream);
41 uint64 startOffset()
const;
42 IoUtilities::BinaryReader &reader();
43 IoUtilities::BinaryWriter &writer();
49 void parseAttachments();
52 bool isHeaderParsed()
const;
53 bool areTagsParsed()
const;
54 bool areTracksParsed()
const;
55 bool areChaptersParsed()
const;
56 bool areAttachmentsParsed()
const;
59 virtual Tag *tag(std::size_t index);
60 virtual std::size_t tagCount()
const;
61 virtual bool removeTag(
Tag *tag);
62 virtual void removeAllTags();
66 virtual std::size_t trackCount()
const;
68 virtual void removeAllTracks();
69 virtual bool supportsTrackModifications()
const;
73 virtual std::size_t chapterCount()
const;
77 virtual std::size_t attachmentCount()
const;
80 uint64 readVersion()
const;
81 const std::string &documentType()
const;
82 uint64 doctypeVersion()
const;
83 uint64 doctypeReadVersion()
const;
84 const std::vector<std::string> &titles()
const;
85 void setTitle(
const std::string &
title, std::size_t segmentIndex = 0);
86 virtual bool supportsTitle()
const;
87 virtual std::size_t segmentCount()
const;
88 ChronoUtilities::TimeSpan
duration()
const;
91 uint32 timeScale()
const;
98 virtual void internalParseHeader();
99 virtual void internalParseTags();
100 virtual void internalParseTracks();
101 virtual void internalParseChapters();
102 virtual void internalParseAttachments();
103 virtual void internalMakeFile();
124 uint64 m_startOffset;
125 std::iostream *m_stream;
126 IoUtilities::BinaryReader m_reader;
127 IoUtilities::BinaryWriter m_writer;
133 inline std::iostream &AbstractContainer::stream()
141 inline void AbstractContainer::setStream(std::iostream &stream)
144 m_reader.setStream(m_stream);
145 m_writer.setStream(m_stream);
151 inline uint64 AbstractContainer::startOffset()
const 153 return m_startOffset;
159 inline IoUtilities::BinaryReader &AbstractContainer::reader()
167 inline IoUtilities::BinaryWriter &AbstractContainer::writer()
175 inline bool AbstractContainer::isHeaderParsed()
const 177 return m_headerParsed;
183 inline bool AbstractContainer::areTagsParsed()
const 191 inline bool AbstractContainer::areChaptersParsed()
const 193 return m_chaptersParsed;
199 inline bool AbstractContainer::areAttachmentsParsed()
const 201 return m_attachmentsParsed;
207 inline bool AbstractContainer::areTracksParsed()
const 209 return m_tracksParsed;
225 inline uint64 AbstractContainer::readVersion()
const 227 return m_readVersion;
233 inline const std::string &AbstractContainer::documentType()
const 241 inline uint64 AbstractContainer::doctypeVersion()
const 243 return m_doctypeVersion;
251 inline uint64 AbstractContainer::doctypeReadVersion()
const 253 return m_doctypeReadVersion;
264 inline const std::vector<std::string> &AbstractContainer::titles()
const 275 inline void AbstractContainer::setTitle(
const std::string &
title, std::size_t segmentIndex)
277 m_titles.at(segmentIndex) =
title;
293 return m_creationTime;
301 return m_modificationTime;
307 inline uint32 AbstractContainer::timeScale()
const 314 #endif // MEDIA_ABSTRACTCONTAINER_H
Contains utility classes helping to read and write streams.
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.