summaryrefslogtreecommitdiff
path: root/server/livefilter.c
diff options
context:
space:
mode:
authorFrank Schmirler <schmirl@puter.linogate.de>2010-12-02 08:53:01 +0100
committerFrank Schmirler <schmirl@puter.linogate.de>2010-12-02 08:53:01 +0100
commit5e30711bfdb28085234a5ef6da4f4e44305ac3e4 (patch)
treed15809d23eeeed7fda55d9450b1af7c99d6eb5d6 /server/livefilter.c
downloadvdr-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.c41
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