| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | 
							- #include "BinaryReader.h"
 
- #include "ByteStream.h"
 
- #include "MpegDashTypes.h"
 
- #include <memory>
 
- namespace bell::mpeg
 
- {
 
-     class MpegDashDemuxer
 
-     {
 
-         std::shared_ptr<bell::BinaryReader> reader;
 
-         std::unique_ptr<bell::mpeg::MpegBox> lastBox;
 
-         std::unique_ptr<bell::mpeg::Moof> lastMoof;
 
-         std::vector<bell::mpeg::Mp4Track> tracks;
 
-         bool chunkZero = false;
 
-     public:
 
-         MpegDashDemuxer(std::shared_ptr<ByteStream> stream);
 
-         ~MpegDashDemuxer() {
 
-             reader->close();
 
-         }
 
-         void parse();
 
-         std::unique_ptr<bell::mpeg::MpegBox> readBox();
 
-         // std::vector<Mp4Track> getTracks();
 
-         std::vector<uint8_t> readFullBox(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         void ensureBox(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         size_t position();
 
-         void close();
 
-         std::unique_ptr<bell::mpeg::Mvhd> parseMvhd();
 
-         std::unique_ptr<bell::mpeg::Chunk> getNextChunk(bool infoOnly);
 
-         std::unique_ptr<bell::mpeg::TrunEntry> getTrunEntry(std::unique_ptr<Trun> &, int);
 
-         std::unique_ptr<bell::mpeg::TrunEntry> getAbsoluteTrunEntry(std::unique_ptr<bell::mpeg::Trun> &, int, std::unique_ptr<bell::mpeg::Tfhd> &);
 
-         std::vector<bell::mpeg::Trex> parseMvex(std::unique_ptr<bell::mpeg::MpegBox> &, int possibleTrackCount);
 
-         std::unique_ptr<bell::mpeg::Mp4DashSample> getNextSample(std::unique_ptr<bell::mpeg::Chunk> &);
 
-         bool hasFlag(int flags, int mask);
 
-         std::unique_ptr<bell::mpeg::Hdlr> parseHdlr(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         std::unique_ptr<bell::mpeg::Moov> parseMoov(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         int parseMfhd();
 
-         std::unique_ptr<bell::mpeg::Traf> parseTraf(std::unique_ptr<bell::mpeg::MpegBox> &, int);
 
-         std::unique_ptr<bell::mpeg::Moof> parseMoof(std::unique_ptr<bell::mpeg::MpegBox> &, int);
 
-         std::unique_ptr<bell::mpeg::Tfhd> parseTfhd(int);
 
-         long parseTfdt();
 
-         std::unique_ptr<bell::mpeg::Trun> parseTrun();
 
-         std::unique_ptr<bell::mpeg::Tkhd> parseTkhd();
 
-         std::unique_ptr<bell::mpeg::Trak> parseTrak(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         bell::mpeg::Trex parseTrex();
 
-         std::unique_ptr<bell::mpeg::Mdia> parseMdia(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         std::unique_ptr<bell::mpeg::Minf> parseMinf(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         std::unique_ptr<bell::mpeg::Elst> parseEdts(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         std::vector<uint8_t> parseStbl(std::unique_ptr<bell::mpeg::MpegBox> &);
 
-         std::unique_ptr<bell::mpeg::MpegBox> untilBox(std::unique_ptr<bell::mpeg::MpegBox> &, int, int, int);
 
-         std::unique_ptr<bell::mpeg::MpegBox> untilBox(std::unique_ptr<bell::mpeg::MpegBox> &, int, int);
 
-         std::unique_ptr<bell::mpeg::MpegBox> untilBox(std::unique_ptr<bell::mpeg::MpegBox> &, int);
 
-         std::unique_ptr<bell::mpeg::MpegBox> untilAnyBox(std::unique_ptr<MpegBox> &);
 
-     };
 
- }
 
 
  |