127 const std::vector<std::uint32_t> &sampleSizes()
const;
128 unsigned int chunkOffsetSize()
const;
129 std::uint32_t chunkCount()
const;
130 std::uint32_t sampleToChunkEntryCount()
const;
136 static std::unique_ptr<Mpeg4ElementaryStreamInfo> parseMpeg4ElementaryStreamInfo(
138 static std::unique_ptr<Mpeg4AudioSpecificConfig> parseAudioSpecificConfig(
139 std::istream &stream, std::uint64_t startOffset, std::uint64_t size,
Diagnostics &diag);
140 static std::unique_ptr<Mpeg4VideoSpecificConfig> parseVideoSpecificConfig(
141 CppUtilities::BinaryReader &reader, std::uint64_t startOffset, std::uint64_t size,
Diagnostics &diag);
144 std::vector<std::uint64_t> readChunkOffsets(
bool parseFragments,
Diagnostics &diag);
145 std::vector<std::tuple<std::uint32_t, std::uint32_t, std::uint32_t>> readSampleToChunkTable(
Diagnostics &diag);
150 std::uint64_t requiredSize(
Diagnostics &diag)
const;
158 void updateChunkOffsets(
const std::vector<std::int64_t> &oldMdatOffsets,
const std::vector<std::int64_t> &newMdatOffsets);
159 void updateChunkOffsets(
const std::vector<std::uint64_t> &chunkOffsets);
160 void updateChunkOffset(std::uint32_t chunkIndex, std::uint64_t offset);
170 std::uint64_t accumulateSampleSizes(std::size_t &sampleIndex, std::size_t count,
Diagnostics &diag);
171 void addChunkSizeEntries(
172 std::vector<std::uint64_t> &chunkSizeTable, std::size_t count, std::size_t &sampleIndex, std::uint32_t sampleCount,
Diagnostics &diag);
187 std::uint32_t m_rawMediaType;
188 std::uint16_t m_framesPerSample;
189 std::vector<std::uint32_t> m_sampleSizes;
190 unsigned int m_chunkOffsetSize;
191 std::uint32_t m_chunkCount;
192 std::uint32_t m_sampleToChunkEntryCount;
193 std::uint64_t m_rawTkhdCreationTime;
194 std::uint64_t m_rawMdhdCreationTime;
195 std::uint64_t m_rawTkhdModificationTime;
196 std::uint64_t m_rawMdhdModificationTime;
197 std::uint64_t m_rawTkhdDuration;
198 std::uint64_t m_rawMdhdDuration;
199 std::unique_ptr<Mpeg4ElementaryStreamInfo> m_esInfo;
200 std::unique_ptr<AvcConfiguration> m_avcConfig;
201 std::unique_ptr<Av1Configuration> m_av1Config;
202 mutable std::unique_ptr<TrackHeaderInfo> m_trackHeaderInfo;