OSDN Git Service

implement dummy class
[tsremuxcpp/developing01.git] / src / Mkv.h
1 #ifndef TSREMUXCPP_MKV_H_
2 #define TSREMUXCPP_MKV_H_
3
4 #include <string>
5 #include "Utils.h"
6 #include "define_temporary.h"
7 #include "define_stream.h"
8 #include "define_backgroundworker.h"
9
10 namespace TsRemux {
11
12 enum LacingType {
13     NoLacing = 0,
14     XiphLacing,
15     FixedSizeLacing,
16     EbmLacing
17 };
18
19 class EbmlElement {
20  public:
21   static EbmlElement* ParseEbml(Stream fs);
22   signed long long Id;
23   signed long long Size;
24   Stream DataStream;
25   EbmlElement* Children;
26   static char VintLength(char vint);
27   static signed long long VintToInt64(Stream fs);
28  protected:
29   signed long long id;
30   signed long long size;
31   signed long long pos;
32   Stream fs;
33   signed long long Position;
34   EbmlElement(signed long long id, signed long long size, signed long long pos, Stream fs);
35  private:
36 /*  static const signed long long vsint_subtr[] = {
37     0x3fLL, 0x1ffffLL, 0xfffffLL, 0x7ffffffLL, 0x3ffffffffLL,
38     0x1ffffffffffLL, 0xffffffffffffffLL, 0x7fffffffffffffLL };*/
39 };
40
41 struct TrackInfo {
42  public:
43   TrackInfo(unsigned short pid, std::string codec, char* data, EbmlElement info);
44   unsigned short pid;
45   std::string codec;
46   char data[];
47   EbmlElement info;
48 };
49
50 class MkvPesFile {
51  public:
52   MkvPesFile(BackgroundWorker bw);
53   DTCP_Descriptor DtcpInfo;
54   PesPacket* GetNextPesPackets(void);
55   void Seek(signed long pcr);
56  protected:
57   void GetInitialValues(void);
58  private:
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);
68 };
69 }
70 #endif
71