4 #include "../abstracttrack.h" 13 class Mpeg4Descriptor;
15 struct TrackHeaderInfo;
57 bool dependencyFlag()
const;
60 byte priority()
const;
61 byte streamTypeId()
const;
62 bool upstream()
const;
129 const std::vector<uint32> &sampleSizes()
const;
130 unsigned int chunkOffsetSize()
const;
131 uint32 chunkCount()
const;
132 uint32 sampleToChunkEntryCount()
const;
137 static std::unique_ptr<Mpeg4ElementaryStreamInfo> parseMpeg4ElementaryStreamInfo(
StatusProvider &statusProvider, IoUtilities::BinaryReader &reader,
Mp4Atom *esDescAtom);
138 static std::unique_ptr<Mpeg4AudioSpecificConfig> parseAudioSpecificConfig(
StatusProvider &statusProvider, std::istream &stream, uint64 startOffset, uint64 size);
139 static std::unique_ptr<Mpeg4VideoSpecificConfig> parseVideoSpecificConfig(
StatusProvider &statusProvider, IoUtilities::BinaryReader &reader, uint64 startOffset, uint64 size);
142 std::vector<uint64> readChunkOffsets();
143 std::vector<uint64> readChunkOffsetsSupportingFragments(
bool parseFragments =
false);
144 std::vector<std::tuple<uint32, uint32, uint32> > readSampleToChunkTable();
145 std::vector<uint64> readChunkSizes();
148 void bufferTrackAtoms();
149 uint64 requiredSize()
const;
151 void makeTrackHeader();
153 void makeMediaInfo();
154 void makeSampleTable();
157 void updateChunkOffsets(
const std::vector<int64> &oldMdatOffsets,
const std::vector<int64> &newMdatOffsets);
158 void updateChunkOffsets(
const std::vector<uint64> &chunkOffsets);
159 void updateChunkOffset(uint32 chunkIndex, uint64 offset);
164 void internalParseHeader();
168 uint64 accumulateSampleSizes(
size_t &sampleIndex,
size_t count);
169 void addChunkSizeEntries(std::vector<uint64> &chunkSizeTable,
size_t count,
size_t &sampleIndex, uint32 sampleCount);
183 uint16 m_framesPerSample;
184 std::vector<uint32> m_sampleSizes;
185 unsigned int m_chunkOffsetSize;
187 uint32 m_sampleToChunkEntryCount;
188 std::unique_ptr<Mpeg4ElementaryStreamInfo> m_esInfo;
189 std::unique_ptr<AvcConfiguration> m_avcConfig;
209 return m_sampleSizes;
219 return m_chunkOffsetSize;
235 return m_sampleToChunkEntryCount;
247 return m_esInfo.get();
258 return m_avcConfig.get();
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.