#include "ts_packet.h" #include "adts.h" #include #include #include "h265.h" namespace TS { enum codecType { H264 = 0x1B, AAC = 0x0F, AC3 = 0x81, MP3 = 0x03, HEVC = 0x06, H265 = 0x24 }; class Stream{ public: void parse(Packet & newPack, unsigned long long bytePos); void parse(char * newPack, unsigned long long bytePos); bool hasPacketOnEachTrack() const; bool hasPacket(unsigned long tid) const; void getPacket(unsigned long tid, DTSC::Packet & pack); void getEarliestPacket(DTSC::Packet & pack); void initializeMetadata(DTSC::Meta & meta); void clear(); private: ProgramAssociationTable associationTable; std::map mappingTable; std::map > pesStreams; std::map > pesPositions; std::map payloadSize; std::map > outPackets; std::map pidToCodec; std::map adtsInfo; std::map spsInfo; std::map ppsInfo; std::map hevcInfo; std::set pmtTracks; void parsePES(unsigned long tid); }; }