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();
147 void bufferTrackAtoms();
148 uint64 requiredSize()
const;
150 void makeTrackHeader();
152 void makeMediaInfo();
153 void makeSampleTable();
156 void updateChunkOffsets(
const std::vector<int64> &oldMdatOffsets,
const std::vector<int64> &newMdatOffsets);
157 void updateChunkOffsets(
const std::vector<uint64> &chunkOffsets);
158 void updateChunkOffset(uint32 chunkIndex, uint64 offset);
163 void internalParseHeader();
167 uint64 accumulateSampleSizes(
size_t &sampleIndex,
size_t count);
168 void addChunkSizeEntries(std::vector<uint64> &chunkSizeTable,
size_t count,
size_t &sampleIndex, uint32 sampleCount);
181 uint16 m_framesPerSample;
182 std::vector<uint32> m_sampleSizes;
183 unsigned int m_chunkOffsetSize;
185 uint32 m_sampleToChunkEntryCount;
186 std::unique_ptr<Mpeg4ElementaryStreamInfo> m_esInfo;
187 std::unique_ptr<AvcConfiguration> m_avcConfig;
207 return m_sampleSizes;
217 return m_chunkOffsetSize;
233 return m_sampleToChunkEntryCount;
245 return m_esInfo.get();
256 return m_avcConfig.get();
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.