summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorlordjaxom <lordjaxom>2005-04-30 14:59:56 +0000
committerlordjaxom <lordjaxom>2005-04-30 14:59:56 +0000
commit32c1bf7c8be08c6016e7e9820c69baa31e38aba2 (patch)
tree600a6314b536f0811d9799085701ec3da5bb5337 /server
parent1447427bdf8657e60144f142135c4157c1834ec8 (diff)
downloadvdr-plugin-streamdev-32c1bf7c8be08c6016e7e9820c69baa31e38aba2.tar.gz
vdr-plugin-streamdev-32c1bf7c8be08c6016e7e9820c69baa31e38aba2.tar.bz2
- fixed wrong remux usage
Diffstat (limited to 'server')
-rw-r--r--server/streamer.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/server/streamer.c b/server/streamer.c
index 9ca4091..9369862 100644
--- a/server/streamer.c
+++ b/server/streamer.c
@@ -1,5 +1,5 @@
/*
- * $Id: streamer.c,v 1.11 2005/04/27 19:43:09 lordjaxom Exp $
+ * $Id: streamer.c,v 1.12 2005/04/30 14:59:56 lordjaxom Exp $
*/
#include <vdr/ringbuffer.h>
@@ -36,10 +36,14 @@ void cStreamdevWriter::Action(void)
cTBSelect sel;
Dprintf("Writer start\n");
int max = 0;
+ uchar *block = NULL;
+ int count, offset = 0;
m_Active = true;
while (m_Active) {
- int count;
- uchar *block = m_Streamer->Get(count);
+ if (block == NULL) {
+ block = m_Streamer->Get(count);
+ offset = 0;
+ }
if (block) {
sel.Clear();
@@ -51,13 +55,18 @@ void cStreamdevWriter::Action(void)
if (sel.CanWrite(*m_Socket)) {
int written;
- if ((written = m_Socket->Write(block, count)) == -1) {
+ if ((written = m_Socket->Write(block + offset, count)) == -1) {
esyslog("ERROR: streamdev-server: couldn't send data: %m");
break;
}
if (count > max)
max = count;
+
+ offset += written;
+ count -= written;
m_Streamer->Del(written);
+ if (count == 0)
+ block = NULL;
}
}
}