1 #ifndef TSREMUXCPP_MKV_H_
2 #define TSREMUXCPP_MKV_H_
6 #include "define_temporary.h"
7 #include "define_stream.h"
8 #include "define_backgroundworker.h"
21 static EbmlElement* ParseEbml(Stream fs);
23 signed long long Size;
25 EbmlElement* Children;
26 static char VintLength(char vint);
27 static signed long long VintToInt64(Stream fs);
30 signed long long size;
33 signed long long Position;
34 EbmlElement(signed long long id, signed long long size, signed long long pos, Stream fs);
36 /* static const signed long long vsint_subtr[] = {
37 0x3fLL, 0x1ffffLL, 0xfffffLL, 0x7ffffffLL, 0x3ffffffffLL,
38 0x1ffffffffffLL, 0xffffffffffffffLL, 0x7fffffffffffffLL };*/
43 TrackInfo(unsigned short pid, std::string codec, char* data, EbmlElement info);
52 MkvPesFile(BackgroundWorker bw);
53 DTCP_Descriptor DtcpInfo;
54 PesPacket* GetNextPesPackets(void);
55 void Seek(signed long pcr);
57 void GetInitialValues(void);
59 SortedList<signed long long, EbmlElement> Clusters;
60 signed int CuurentIndex;
61 Dictionary<unsigned short, TrackInfo> TrackList;
62 unsigned long long GetClusterClock(EbmlElement cluster);
63 PesPacket BuildAc3Pes(signed long long timestamp, char data[], unsigned short pid);
64 PesPacket BuildMpeg2Pes(signed long long timestamp, char data[], unsigned short pid);
65 PesPacket BuildAvcPes(signed long long timestamp, char data[], unsigned short pid);
66 PesPacket BuildVc1Pes(signed long long timestamp, char data[], unsigned short pid);
67 void GetTimeStamps(void);