1 #ifndef TSREMUXCPP_MKV_H_
2 #define TSREMUXCPP_MKV_H_
5 #include "define_temporary.h"
6 #include "define_backgroundworker.h"
19 static EbmlElement* ParseEbml(Stream fs);
23 EbmlElement* Children;
24 static char VintLength(char vint);
25 static Int64 VintToInt64(Stream fs);
32 EbmlElement(Int64 id, Int64 size, Int64 pos, Stream& fs);
34 /* static const Int64 vsint_subtr[] = {
35 0x3fLL, 0x1ffffLL, 0xfffffLL, 0x7ffffffLL, 0x3ffffffffLL,
36 0x1ffffffffffLL, 0xffffffffffffffLL, 0x7fffffffffffffLL };*/
41 TrackInfo(ushort pid, std::string codec, pByte data, EbmlElement& info);
50 MkvPesFile(BackgroundWorker& bw);
51 DTCP_Descriptor DtcpInfo;
52 boost::shared_array<PesPacket> GetNextPesPackets(void);
55 void GetInitialValues(void);
57 SortedList<Int64, EbmlElement> Clusters;
58 signed int CuurentIndex;
59 Dictionary<ushort, TrackInfo> TrackList;
60 unsigned long long GetClusterClock(EbmlElement cluster);
61 PesPacket BuildAc3Pes(Int64 timestamp, char data[], ushort pid);
62 PesPacket BuildMpeg2Pes(Int64 timestamp, char data[], ushort pid);
63 PesPacket BuildAvcPes(Int64 timestamp, char data[], ushort pid);
64 PesPacket BuildVc1Pes(Int64 timestamp, char data[], ushort pid);
65 void GetTimeStamps(void);