diff options
author | Frank Schmirler <schmirl@puter.linogate.de> | 2010-12-02 08:53:01 +0100 |
---|---|---|
committer | Frank Schmirler <schmirl@puter.linogate.de> | 2010-12-02 08:53:01 +0100 |
commit | 5e30711bfdb28085234a5ef6da4f4e44305ac3e4 (patch) | |
tree | d15809d23eeeed7fda55d9450b1af7c99d6eb5d6 /server/livefilter.c | |
download | vdr-plugin-streamdev-5e30711bfdb28085234a5ef6da4f4e44305ac3e4.tar.gz vdr-plugin-streamdev-5e30711bfdb28085234a5ef6da4f4e44305ac3e4.tar.bz2 |
Snapshot 2007-03-20
Diffstat (limited to 'server/livefilter.c')
-rw-r--r-- | server/livefilter.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/server/livefilter.c b/server/livefilter.c new file mode 100644 index 0000000..4524a88 --- /dev/null +++ b/server/livefilter.c @@ -0,0 +1,41 @@ +/* + * $Id: livefilter.c,v 1.2 2005/02/08 13:59:16 lordjaxom Exp $ + */ + +#include "server/livefilter.h" +#include "server/livestreamer.h" +#include "common.h" + +#if VDRVERSNUM >= 10300 + +cStreamdevLiveFilter::cStreamdevLiveFilter(cStreamdevLiveStreamer *Streamer) { + m_Streamer = Streamer; +} + +cStreamdevLiveFilter::~cStreamdevLiveFilter() { +} + +void cStreamdevLiveFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length) +{ + uchar buffer[TS_SIZE]; + int length = Length; + int pos = 0; + + while (length > 0) { + int chunk = min(length, TS_SIZE - 5); + buffer[0] = TS_SYNC_BYTE; + buffer[1] = (Pid >> 8) & 0xff; + buffer[2] = Pid & 0xff; + buffer[3] = Tid; + buffer[4] = (uchar)chunk; + memcpy(buffer + 5, Data + pos, chunk); + length -= chunk; + pos += chunk; + + int p = m_Streamer->Put(buffer, TS_SIZE); + if (p != TS_SIZE) + m_Streamer->ReportOverflow(TS_SIZE - p); + } +} + +#endif // VDRVERSNUM >= 10300 |