4 #include "../abstracttrack.h" 13 class Mpeg4Descriptor;
56 bool dependencyFlag()
const;
59 byte priority()
const;
60 byte streamTypeId()
const;
61 bool upstream()
const;
128 const std::vector<uint32> &sampleSizes()
const;
129 unsigned int chunkOffsetSize()
const;
130 uint32 chunkCount()
const;
131 uint32 sampleToChunkEntryCount()
const;
136 static std::unique_ptr<Mpeg4ElementaryStreamInfo> parseMpeg4ElementaryStreamInfo(
StatusProvider &statusProvider, IoUtilities::BinaryReader &reader,
Mp4Atom *esDescAtom);
137 static std::unique_ptr<Mpeg4AudioSpecificConfig> parseAudioSpecificConfig(
StatusProvider &statusProvider, std::istream &stream, uint64 startOffset, uint64 size);
138 static std::unique_ptr<Mpeg4VideoSpecificConfig> parseVideoSpecificConfig(
StatusProvider &statusProvider, IoUtilities::BinaryReader &reader, uint64 startOffset, uint64 size);
141 std::vector<uint64> readChunkOffsets();
142 std::vector<uint64> readChunkOffsetsSupportingFragments(
bool parseFragments =
false);
143 std::vector<std::tuple<uint32, uint32, uint32> > readSampleToChunkTable();
144 std::vector<uint64> readChunkSizes();
148 uint64 requiredSize()
const;
149 void makeTrackHeader();
151 void makeMediaInfo();
152 void makeSampleTable();
155 void updateChunkOffsets(
const std::vector<int64> &oldMdatOffsets,
const std::vector<int64> &newMdatOffsets);
156 void updateChunkOffsets(
const std::vector<uint64> &chunkOffsets);
157 void updateChunkOffset(uint32 chunkIndex, uint64 offset);
162 void internalParseHeader();
166 uint64 accumulateSampleSizes(
size_t &sampleIndex,
size_t count);
167 void addChunkSizeEntries(std::vector<uint64> &chunkSizeTable,
size_t count,
size_t &sampleIndex, uint32 sampleCount);
182 uint16 m_framesPerSample;
183 std::vector<uint32> m_sampleSizes;
184 unsigned int m_chunkOffsetSize;
186 uint32 m_sampleToChunkEntryCount;
187 std::unique_ptr<Mpeg4ElementaryStreamInfo> m_esInfo;
188 std::unique_ptr<AvcConfiguration> m_avcConfig;
208 return m_sampleSizes;
218 return m_chunkOffsetSize;
234 return m_sampleToChunkEntryCount;
246 return m_esInfo.get();
257 return m_avcConfig.get();
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.