diff options
author | schmirl <schmirl> | 2009-06-19 06:32:38 +0000 |
---|---|---|
committer | schmirl <schmirl> | 2009-06-19 06:32:38 +0000 |
commit | 008e7c851013722a377aa9ff4485d4af2d991883 (patch) | |
tree | 8178a3251d528849d2ccbb0cef9b1bd712cfd6f9 /remux/ts2pes.h | |
parent | 64ff2c08be769cf227ac6cf2e318fcb6b80c9689 (diff) | |
download | vdr-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.h | 58 |
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 |