summaryrefslogtreecommitdiff
path: root/remux/ts2pes.h
diff options
context:
space:
mode:
authorschmirl <schmirl>2009-06-19 06:32:38 +0000
committerschmirl <schmirl>2009-06-19 06:32:38 +0000
commit008e7c851013722a377aa9ff4485d4af2d991883 (patch)
tree8178a3251d528849d2ccbb0cef9b1bd712cfd6f9 /remux/ts2pes.h
parent64ff2c08be769cf227ac6cf2e318fcb6b80c9689 (diff)
downloadvdr-plugin-streamdev-008e7c851013722a377aa9ff4485d4af2d991883.tar.gz
vdr-plugin-streamdev-008e7c851013722a377aa9ff4485d4af2d991883.tar.bz2
- added namespace to remuxers
- increased WRITERBUFSIZE - buffer was too small for high bandwidth content - removed cStreamdevStreamer::m_Running - eliminated potential busy waits in remuxers - updated cTSRemux static helpers to code of their VDR 1.6.0 counterparts - re-enabled PES vor VDR 1.7.3+. Streamdev now uses a copy of VDR 1.6.0's cRemux for TS to PES remuxing. - make sure that only complete TS packets are written to ringbuffers - use signaling instead of sleeps when writing to ringbuffers - optimized cStreamdevPatFilter PAT packet initialization - fixed cStreamdevPatFilter not processing PATs with length > TS_SIZE - 5 - use a small ringbuffer for cStreamdevPatFilter instead of writing to cStreamdevStreamers SendBuffer as two threads mustn't write to the same ringbuffer Modified Files: CONTRIBUTORS HISTORY Makefile common.c common.h streamdev-server.c libdvbmpeg/transform.h remux/extern.c remux/extern.h remux/ts2es.c remux/ts2es.h remux/ts2ps.c remux/ts2ps.h remux/tsremux.c remux/tsremux.h server/connectionHTTP.c server/connectionVTP.c server/livestreamer.c server/livestreamer.h server/menuHTTP.c server/streamer.c server/streamer.h Added Files: remux/ts2pes.c remux/ts2pes.h
Diffstat (limited to 'remux/ts2pes.h')
-rw-r--r--remux/ts2pes.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/remux/ts2pes.h b/remux/ts2pes.h
new file mode 100644
index 0000000..f843cf3
--- /dev/null
+++ b/remux/ts2pes.h
@@ -0,0 +1,58 @@
+/*
+ * ts2pes.h: A streaming MPEG2 remultiplexer
+ *
+ * This file is based on a copy of remux.h from Klaus Schmidinger's
+ * VDR, version 1.6.0.
+ *
+ * $Id: ts2pes.h,v 1.1 2009/06/19 06:32:40 schmirl Exp $
+ */
+
+#ifndef VDR_STREAMDEV_TS2PES_H
+#define VDR_STREAMDEV_TS2PES_H
+
+#include "remux/tsremux.h"
+#include "server/streamer.h"
+
+#define MAXTRACKS 64
+
+namespace Streamdev {
+
+class cTS2PES;
+
+class cTS2PESRemux: public cTSRemux {
+private:
+ bool noVideo;
+ bool synced;
+ int skipped;
+ Streamdev::cTS2PES *ts2pes[MAXTRACKS];
+ int numTracks;
+ cStreamdevBuffer *resultBuffer;
+ int resultSkipped;
+public:
+ cTS2PESRemux(int VPid, const int *APids, const int *DPids, const int *SPids);
+ ///< Creates a new remuxer for the given PIDs. VPid is the video PID, while
+ ///< APids, DPids and SPids are pointers to zero terminated lists of audio,
+ ///< dolby and subtitle PIDs (the pointers may be NULL if there is no such
+ ///< PID).
+ ~cTS2PESRemux();
+ int Put(const uchar *Data, int Count);
+ ///< Puts at most Count bytes of Data into the remuxer.
+ ///< \return Returns the number of bytes actually consumed from Data.
+ uchar *Get(int &Count, uchar *PictureType = NULL);
+ ///< Gets all currently available data from the remuxer.
+ ///< \return Count contains the number of bytes the result points to, and
+ ///< PictureType (if not NULL) will contain one of NO_PICTURE, I_FRAME, P_FRAME
+ ///< or B_FRAME.
+ void Del(int Count);
+ ///< Deletes Count bytes from the remuxer. Count must be the number returned
+ ///< from a previous call to Get(). Several calls to Del() with fractions of
+ ///< a previously returned Count may be made, but the total sum of all Count
+ ///< values must be exactly what the previous Get() has returned.
+ void Clear(void);
+ ///< Clears the remuxer of all data it might still contain, keeping the PID
+ ///< settings as they are.
+ };
+
+} // namespace Streamdev
+
+#endif // VDR_STREAMDEV_TS2PES_H