summaryrefslogtreecommitdiff
path: root/server/livestreamer.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/livestreamer.c')
-rw-r--r--server/livestreamer.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/server/livestreamer.c b/server/livestreamer.c
index 9e154ee..c601573 100644
--- a/server/livestreamer.c
+++ b/server/livestreamer.c
@@ -21,18 +21,17 @@ class cStreamdevLiveReceiver: public cReceiver {
friend class cStreamdevStreamer;
private:
- cStreamdevStreamer *m_Streamer;
+ cStreamdevLiveStreamer *m_Streamer;
protected:
virtual void Receive(uchar *Data, int Length);
public:
- cStreamdevLiveReceiver(cStreamdevStreamer *Streamer, const cChannel *Channel, int Priority, const int *Pids);
+ cStreamdevLiveReceiver(cStreamdevLiveStreamer *Streamer, const cChannel *Channel, int Priority, const int *Pids);
virtual ~cStreamdevLiveReceiver();
};
-cStreamdevLiveReceiver::cStreamdevLiveReceiver(cStreamdevStreamer *Streamer, const cChannel *Channel,
- int Priority, const int *Pids):
+cStreamdevLiveReceiver::cStreamdevLiveReceiver(cStreamdevLiveStreamer *Streamer, const cChannel *Channel, int Priority, const int *Pids):
cReceiver(Channel, Priority),
m_Streamer(Streamer)
{
@@ -48,9 +47,7 @@ cStreamdevLiveReceiver::~cStreamdevLiveReceiver()
}
void cStreamdevLiveReceiver::Receive(uchar *Data, int Length) {
- int p = m_Streamer->Receive(Data, Length);
- if (p != Length)
- m_Streamer->ReportOverflow(Length - p);
+ m_Streamer->Receive(Data, Length);
}
// --- cStreamdevPatFilter ----------------------------------------------------
@@ -341,18 +338,18 @@ cStreamdevLiveStreamer::cStreamdevLiveStreamer(int Priority, const cServerConnec
m_PatFilter(NULL),
m_Remux(NULL)
{
+ m_ReceiveBuffer = new cStreamdevBuffer(LIVEBUFSIZE, TS_SIZE *2, true, "streamdev-livestreamer"),
+ m_ReceiveBuffer->SetTimeouts(0, 100);
}
cStreamdevLiveStreamer::~cStreamdevLiveStreamer()
{
Dprintf("Desctructing Live streamer\n");
Stop();
- if(m_PatFilter) {
- Detach();
- DELETENULL(m_PatFilter);
- }
+ DELETENULL(m_PatFilter);
DELETENULL(m_Receiver);
delete m_Remux;
+ delete m_ReceiveBuffer;
}
bool cStreamdevLiveStreamer::HasPid(int Pid)
@@ -522,6 +519,13 @@ bool cStreamdevLiveStreamer::SetChannel(const cChannel *Channel, eStreamType Str
}
}
+void cStreamdevLiveStreamer::Receive(uchar *Data, int Length)
+{
+ int p = m_ReceiveBuffer->PutTS(Data, Length);
+ if (p != Length)
+ m_ReceiveBuffer->ReportOverflow(Length - p);
+}
+
int cStreamdevLiveStreamer::Put(const uchar *Data, int Count)
{
// insert si data