]> git.vomp.tv Git - vompserver.git/blob - remux/tsremux.h
Initial import
[vompserver.git] / remux / tsremux.h
1 #ifndef VDR_STREAMDEV_TSREMUX_H
2 #define VDR_STREAMDEV_TSREMUX_H
3
4 #include "transform.h"
5 #include <vdr/remux.h>
6
7 #define IPACKS 2048
8
9 #define PROTECTIONSIZE 32768
10
11 #ifndef RESULTBUFFERSIZE
12 #define RESULTBUFFERSIZE KILOBYTE(256)
13 #endif
14 #ifndef MINVIDEODATA
15 #define MINVIDEODATA (16*1024)
16 #endif
17
18 class cTSRemux {
19 protected:
20   uchar m_PROTECTION1[PROTECTIONSIZE]; // something sometimes overwrites vtbl without this buffer
21   uchar m_ResultBuffer[RESULTBUFFERSIZE];
22         int m_ResultCount;
23         int m_ResultDelivered;
24         int m_Synced;
25         int m_Skipped;
26         int m_Sync;
27
28   int GetPacketLength(const uchar *Data, int Count, int Offset);
29   int ScanVideoPacket(const uchar *Data, int Count, int Offset, uchar &PictureType);
30
31         virtual void PutTSPacket(int Pid, const uint8_t *Data) = 0;
32
33 public:
34         cTSRemux(bool Sync = true);
35         virtual ~cTSRemux();
36         
37         virtual uchar *Process(const uchar *Data, int &Count, int &Result);
38
39         static void SetBrokenLink(uchar *Data, int Length);
40 };
41
42 #endif // VDR_STREAMDEV_TSREMUX_H