vdr-plugin-streamdev/server/livefilter.c

42 lines
912 B
C
Raw Normal View History

2004-12-30 23:43:55 +01:00
/*
2005-02-08 14:59:16 +01:00
* $Id: livefilter.c,v 1.2 2005/02/08 13:59:16 lordjaxom Exp $
2004-12-30 23:43:55 +01:00
*/
#include "server/livefilter.h"
#include "server/livestreamer.h"
#include "common.h"
#if VDRVERSNUM >= 10300
cStreamdevLiveFilter::cStreamdevLiveFilter(cStreamdevLiveStreamer *Streamer) {
m_Streamer = Streamer;
}
cStreamdevLiveFilter::~cStreamdevLiveFilter() {
}
2005-02-08 14:59:16 +01:00
void cStreamdevLiveFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length)
{
2004-12-30 23:43:55 +01:00
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);
2005-02-08 14:59:16 +01:00
if (p != TS_SIZE)
m_Streamer->ReportOverflow(TS_SIZE - p);
2004-12-30 23:43:55 +01:00
}
}
#endif // VDRVERSNUM >= 10300