summaryrefslogtreecommitdiff
path: root/remux.h
diff options
context:
space:
mode:
Diffstat (limited to 'remux.h')
-rw-r--r--remux.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/remux.h b/remux.h
new file mode 100644
index 0000000..bceb676
--- /dev/null
+++ b/remux.h
@@ -0,0 +1,51 @@
+/*
+ * remux.h: A streaming MPEG2 remultiplexer
+ *
+ * See the main source file 'vdr.c' for copyright information and
+ * how to reach the author.
+ *
+ * $Id: remux.h 1.1 2001/03/31 08:42:27 kls Exp $
+ */
+
+#ifndef __REMUX_H
+#define __REMUX_H
+
+// There are various experiments with different types of remultiplexers
+// going on at the moment. Select the remultiplexer here:
+#define REMUX_NONE 1
+//#define REMUX_TEST 1
+
+// Picture types:
+#define NO_PICTURE 0
+#define I_FRAME 1
+#define P_FRAME 2
+#define B_FRAME 3
+
+// Start codes:
+#define SC_PICTURE 0x00 // "picture header"
+#define SC_SEQU 0xB3 // "sequence header"
+#define SC_PHEAD 0xBA // "pack header"
+#define SC_SHEAD 0xBB // "system header"
+#define SC_AUDIO 0xC0
+#define SC_VIDEO 0xE0
+
+// The minimum amount of video data necessary to identify frames:
+#define MINVIDEODATA (256*1024) // just a safe guess (max. size of any frame block, plus some safety)
+
+typedef unsigned char uchar;
+
+class cRemux {
+private:
+#if defined(REMUX_NONE)
+ bool synced;
+ int GetPacketLength(const uchar *Data, int Count, int Offset);
+ int ScanVideoPacket(const uchar *Data, int Count, int Offset, uchar &PictureType);
+#elif defined(REMUX_TEST)
+#endif
+public:
+ cRemux(void);
+ ~cRemux();
+ const uchar *Process(const uchar *Data, int &Count, int &Result, uchar &PictureType);
+ };
+
+#endif // __REMUX_H