Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] [PATCH] streamdev plugin for 1.3.18
This patch should apply to vdr-streamdev-0.3.3-pre4 (no need for any other patches). Thanks goes to
everyone that helped me with this.
Best Regards,
C.Y.M.
diff -ru streamdev-0.3.3-pre3-geni/client/assembler.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/assembler.c
--- streamdev-0.3.3-pre3-geni/client/assembler.c 2004-08-17 06:07:51.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/assembler.c 2005-01-12 19:19:16.000000000 -0800
@@ -33,7 +33,9 @@
cStreamdevAssembler::~cStreamdevAssembler() {
if (m_Active) {
m_Active = false;
+#if VDRVERSNUM < 10314
WakeUp();
+#endif
Cancel(3);
}
close(m_Pipe[0]);
diff -ru streamdev-0.3.3-pre3-geni/client/device.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/device.c
--- streamdev-0.3.3-pre3-geni/client/device.c 2004-08-17 07:48:04.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/device.c 2005-01-12 20:03:47.000000000 -0800
@@ -131,10 +131,14 @@
}
bool cStreamdevDevice::GetTSPacket(uchar *&Data) {
- if (m_TSBuffer) {
- int r;
- while ((r = m_TSBuffer->Read()) >= 0) {
- Data = m_TSBuffer->Get();
+ if (m_TSBuffer) {
+#if VDRVERSNUM < 10313
+ int r;
+ while ((r = m_TSBuffer->Read()) >= 0) {
+ Data = m_TSBuffer->Get();
+#else
+ while ((Data = m_TSBuffer->Get())) {
+#endif
#if VDRVERSNUM >= 10300
if (Data != NULL) {
u_short pid = (((u_char)Data[1] & PID_MASK_HI) << 8) | Data[2];
@@ -145,15 +149,17 @@
}
}
#endif
- return true;
- }
+ return true;
+ }
+#if VDRVERSNUM < 10313
if (FATALERRNO) {
- LOG_ERROR;
- return false;
- }
- return true;
+ LOG_ERROR;
+ return false;
+ }
+#endif
+ return true;
}
- return false;
+ return false;
}
#if VDRVERSNUM >= 10300
diff -ru streamdev-0.3.3-pre3-geni/client/device.h vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/device.h
--- streamdev-0.3.3-pre3-geni/client/device.h 2004-08-14 10:57:51.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/device.h 2005-01-12 20:00:43.000000000 -0800
@@ -30,7 +30,6 @@
protected:
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
- virtual bool HasLock(void) { return m_TSBuffer != NULL; }
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
virtual bool OpenDvr(void);
@@ -53,6 +52,7 @@
static bool ReInit(void);
static cStreamdevDevice *GetDevice(void) { return m_Device; }
+ virtual bool HasLock(int) { return m_TSBuffer != NULL; }
};
#endif // VDR_STREAMDEV_DEVICE_H
diff -ru streamdev-0.3.3-pre3-geni/client/filter.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/filter.c
--- streamdev-0.3.3-pre3-geni/client/filter.c 2004-08-17 05:44:12.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/filter.c 2005-01-12 19:29:54.000000000 -0800
@@ -91,13 +91,13 @@
++errcnt;
if (showerr) {
if (firsterr == 0)
- firsterr = time_ms();
- else if (firsterr + BUFOVERTIME > time_ms() && errcnt > BUFOVERCOUNT) {
+ firsterr = int(cTimeMs::Now());
+ else if (firsterr + BUFOVERTIME > int(cTimeMs::Now()) && errcnt > BUFOVERCOUNT) {
esyslog("ERROR: too many buffer overflows, logging stopped");
showerr = false;
- firsterr = time_ms();
+ firsterr = int(cTimeMs::Now());
}
- } else if (firsterr + BUFOVERTIME < time_ms()) {
+ } else if (firsterr + BUFOVERTIME < int(cTimeMs::Now())) {
showerr = true;
firsterr = 0;
errcnt = 0;
@@ -106,7 +106,7 @@
if (showerr)
esyslog("ERROR: ring buffer overflow (%d bytes dropped)", TS_SIZE - p);
else
- firsterr = time_ms();
+ firsterr = int(cTimeMs::Now());
}
}
diff -ru streamdev-0.3.3-pre3-geni/client/remote.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/remote.c
--- streamdev-0.3.3-pre3-geni/client/remote.c 2004-08-14 14:21:21.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/remote.c 2005-01-12 19:53:04.000000000 -0800
@@ -457,7 +457,7 @@
summary = strreplace(strdup(m_Summary), ':', '|');
asprintf(&m_Buffer, "%d:%s:%s:%04d:%04d:%d:%d:%s:%s", m_Active,
- Channel()->GetChannelID().ToString(), PrintDay(m_Day, m_FirstDay),
+ *Channel()->GetChannelID().ToString(), PrintDay(m_Day, m_FirstDay),
m_Start, m_Stop, m_Priority, m_Lifetime, m_File, summary ? summary : "");
if (summary != NULL)
diff -ru streamdev-0.3.3-pre3-geni/client/socket.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/socket.c
--- streamdev-0.3.3-pre3-geni/client/socket.c 2004-08-17 06:07:51.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/client/socket.c 2005-01-12 19:28:47.000000000 -0800
@@ -47,7 +47,7 @@
pkt = Command + "\015\012";
Dprintf("OUT: |%s|\n", (const char*)Command);
- st = time_ms();
+ st = int(cTimeMs::Now());
if (!TimedWrite((const char*)pkt, pkt.Length(), TimeoutMs)) {
esyslog("Streamdev: Lost connection to %s:%d: %s",
(const char*)RemoteIp(), RemotePort(), strerror(errno));
@@ -56,7 +56,7 @@
}
if (Expected != 0) {
- TimeoutMs -= time_ms() - st;
+ TimeoutMs -= int(cTimeMs::Now()) - st;
return Expect(Expected, NULL, TimeoutMs);
}
diff -ru streamdev-0.3.3-pre3-geni/remux/tsremux.h vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/remux/tsremux.h
--- streamdev-0.3.3-pre3-geni/remux/tsremux.h 2004-07-13 07:00:51.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/remux/tsremux.h 2005-01-12 19:19:16.000000000 -0800
@@ -4,6 +4,13 @@
#include "libdvbmpeg/transform.h"
#include <vdr/remux.h>
+#ifndef MINVIDEODATA
+#define MINVIDEODATA KILOBYTE(16)
+#endif
+#ifndef RESULTBUFFERSIZE
+#define RESULTBUFFERSIZE KILOBYTE(256)
+#endif
+
class cTSRemux {
protected:
uchar m_ResultBuffer[RESULTBUFFERSIZE];
diff -ru streamdev-0.3.3-pre3-geni/server/connectionHTTP.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/connectionHTTP.c
--- streamdev-0.3.3-pre3-geni/server/connectionHTTP.c 2004-08-20 10:30:41.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/connectionHTTP.c 2005-01-12 19:44:44.000000000 -0800
@@ -99,7 +99,7 @@
else
line.Format("<li><a href=\"http://%s:%d/%s\">%s</a></li>",
(const char*)LocalIp(), StreamdevServerSetup.HTTPServerPort,
- m_ListChannel->GetChannelID().ToString(), m_ListChannel->Name());
+ *m_ListChannel->GetChannelID().ToString(), m_ListChannel->Name());
if (!Respond(line))
DeferClose();
m_ListChannel = Channels.Next(m_ListChannel);
diff -ru streamdev-0.3.3-pre3-geni/server/connectionVTP.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/connectionVTP.c
--- streamdev-0.3.3-pre3-geni/server/connectionVTP.c 2004-08-17 07:48:04.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/connectionVTP.c 2005-01-12 19:41:00.000000000 -0800
@@ -284,11 +284,11 @@
if (ep == Opts || (*ep != '\0' && *ep != ' '))
return Respond(500, "Use: ABRT Id");
- time_t st = time_ms();
+// time_t st = int(cTimeMs::Now());
if (id == siLive)
DELETENULL(m_LiveStreamer);
- Dprintf("ABRT took %ld ms\n", time_ms() - st);
+ Dprintf("ABRT took %ld ms\n", int(cTimeMs::Now()) - st);
DELETENULL(m_DataSockets[id]);
return Respond(220, "Data connection closed");
}
@@ -422,7 +422,7 @@
if (isnumber(Option)) {
cTimer *timer = Timers.Get(strtol(Option, NULL, 10) - 1);
if (timer)
- Reply(250, "%d %s", timer->Index() + 1, timer->ToText(true));
+ Reply(250, "%d %s", timer->Index() + 1, *timer->ToText(true));
else
Reply(501, "Timer \"%s\" not defined", Option);
}
@@ -433,7 +433,7 @@
for (int i = 0; i < Timers.Count(); i++) {
cTimer *timer = Timers.Get(i);
if (timer)
- Reply(i < Timers.Count() - 1 ? -250 : 250, "%d %s", timer->Index() + 1, timer->ToText(true));
+ Reply(i < Timers.Count() - 1 ? -250 : 250, "%d %s", timer->Index() + 1, *timer->ToText(true));
else
Reply(501, "Timer \"%d\" not found", i + 1);
}
@@ -478,7 +478,7 @@
isyslog("timer %d modified (%s)", timer->Index() + 1,
timer->HasFlags(tfActive) ? "active" : "inactive");
#endif
- Reply(250, "%d %s", timer->Index() + 1, timer->ToText(true));
+ Reply(250, "%d %s", timer->Index() + 1, *timer->ToText(true));
}
else
Reply(501, "Timer \"%d\" not defined", n);
@@ -501,11 +501,11 @@
Timers.Add(timer);
Timers.Save();
isyslog("timer %d added", timer->Index() + 1);
- Reply(250, "%d %s", timer->Index() + 1, timer->ToText(true));
+ Reply(250, "%d %s", timer->Index() + 1, *timer->ToText(true));
EXIT_WRAPPER();
}
else
- Reply(550, "Timer already defined: %d %s", t->Index() + 1, t->ToText(true));
+ Reply(550, "Timer already defined: %d %s", t->Index() + 1, *t->ToText(true));
}
else
Reply(501, "Error in timer settings");
diff -ru streamdev-0.3.3-pre3-geni/server/livefilter.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/livefilter.c
--- streamdev-0.3.3-pre3-geni/server/livefilter.c 2004-08-14 10:27:52.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/livefilter.c 2005-01-12 19:20:36.000000000 -0800
@@ -17,9 +17,10 @@
void cStreamdevLiveFilter::Process(u_short Pid, u_char Tid, const u_char *Data,
int Length) {
- static time_t firsterr = 0;
+ static cTimeMs errTime;
static int errcnt = 0;
static bool showerr = true;
+ static bool goterr = false;
uchar buffer[TS_SIZE];
int length = Length;
@@ -40,23 +41,28 @@
if (p != TS_SIZE) {
++errcnt;
if (showerr) {
- if (firsterr == 0)
- firsterr = time_ms();
- else if (firsterr + BUFOVERTIME > time_ms() && errcnt > BUFOVERCOUNT) {
+ if (!goterr) {
+ errTime.Set();
+ goterr = true;
+ }
+ else if (errTime.Elapsed() > BUFOVERTIME && errcnt > BUFOVERCOUNT) {
esyslog("ERROR: too many buffer overflows, logging stopped");
showerr = false;
- firsterr = time_ms();
+ errTime.Set();
+ goterr = true;
}
- } else if (firsterr + BUFOVERTIME < time_ms()) {
+ } else if (errTime.Elapsed() < BUFOVERTIME) {
showerr = true;
- firsterr = 0;
+ goterr = false;
errcnt = 0;
}
if (showerr)
- esyslog("ERROR: ring buffer overflow (%d bytes dropped)", TS_SIZE - p);
+ esyslog("ERROR: ring buffer overflow (%d bytes dropped)",
+ TS_SIZE - p);
else
- firsterr = time_ms();
+ errTime.Set();
+ goterr = true;
}
}
}
diff -ru streamdev-0.3.3-pre3-geni/server/livestreamer.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/livestreamer.c
--- streamdev-0.3.3-pre3-geni/server/livestreamer.c 2004-08-17 06:07:51.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/server/livestreamer.c 2005-01-12 19:33:47.000000000 -0800
@@ -32,13 +32,13 @@
++errcnt;
if (showerr) {
if (firsterr == 0)
- firsterr = time_ms();
- else if (firsterr + BUFOVERTIME > time_ms() && errcnt > BUFOVERCOUNT) {
+ firsterr = int(cTimeMs::Now());
+ else if (firsterr + BUFOVERTIME > int(cTimeMs::Now()) && errcnt > BUFOVERCOUNT) {
esyslog("ERROR: too many buffer overflows, logging stopped");
showerr = false;
- firsterr = time_ms();
+ firsterr = int(cTimeMs::Now());
}
- } else if (firsterr + BUFOVERTIME < time_ms()) {
+ } else if (firsterr + BUFOVERTIME < int(cTimeMs::Now())) {
showerr = true;
firsterr = 0;
errcnt = 0;
@@ -47,7 +47,7 @@
if (showerr)
esyslog("ERROR: ring buffer overflow (%d bytes dropped)", Length - p);
else
- firsterr = time_ms();
+ firsterr = int(cTimeMs::Now());
}
}
@@ -141,32 +141,32 @@
switch (StreamType) {
case stES:
{
- int pid = ISRADIO(Channel) ? Channel->Apid1() : Channel->Vpid();
+ int pid = ISRADIO(Channel) ? Channel->Apid(0) : Channel->Vpid();
m_Remux = new cTS2ESRemux(pid);
return SetPid(pid, true);
}
case stPES:
- m_Remux = new cTS2PSRemux(Channel->Vpid(), Channel->Apid1(),
- Channel->Apid2(), Channel->Dpid1(), 0, false);
+ m_Remux = new cTS2PSRemux(Channel->Vpid(), Channel->Apid(0),
+ Channel->Apid(1), Channel->Dpid(0), 0, false);
return SetPid(Channel->Vpid(), true)
- && SetPid(Channel->Apid1(), true)
- && SetPid(Channel->Apid2(), true)
- && SetPid(Channel->Dpid1(), true);
+ && SetPid(Channel->Apid(0), true)
+ && SetPid(Channel->Apid(1), true)
+ && SetPid(Channel->Dpid(0), true);
break;
case stPS:
- m_Remux = new cTS2PSRemux(Channel->Vpid(), Channel->Apid1(), 0, 0, 0, true);
+ m_Remux = new cTS2PSRemux(Channel->Vpid(), Channel->Apid(0), 0, 0, 0, true);
return SetPid(Channel->Vpid(), true)
- && SetPid(Channel->Apid1(), true);
+ && SetPid(Channel->Apid(0), true);
break;
case stTS:
if (!StreamPIDS) {
return SetPid(Channel->Vpid(), true)
- && SetPid(Channel->Apid1(), true)
- && SetPid(Channel->Apid2(), true)
- && SetPid(Channel->Dpid1(), true);
+ && SetPid(Channel->Apid(0), true)
+ && SetPid(Channel->Apid(1), true)
+ && SetPid(Channel->Dpid(0), true);
}
Dprintf("pid streaming mode\n");
return true;
diff -ru streamdev-0.3.3-pre3-geni/streamdev-server.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/streamdev-server.c
--- streamdev-0.3.3-pre3-geni/streamdev-server.c 2004-08-17 07:48:04.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/streamdev-server.c 2005-01-12 19:46:17.000000000 -0800
@@ -12,7 +12,7 @@
#include "server/suspend.h"
#include "i18n.h"
-const char *cPluginStreamdevServer::DESCRIPTION = "VDR Streaming Server";
+cString cPluginStreamdevServer::DESCRIPTION = "VDR Streaming Server";
cPluginStreamdevServer::cPluginStreamdevServer(void) {
}
@@ -30,7 +30,7 @@
RegisterI18n(Phrases);
if (!StreamdevHosts.Load(STREAMDEVHOSTS, true, true)) {
- esyslog("streamdev-server: error while loading %s", STREAMDEVHOSTS);
+ esyslog("streamdev-server: error while loading %s", *STREAMDEVHOSTS);
fprintf(stderr, "streamdev-server: error while loading %s\n");
if (access(STREAMDEVHOSTS, F_OK) != 0)
fprintf(stderr, " Please install streamdevhosts.conf into the path "
Only in vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni: streamdev-server.c.rej
diff -ru streamdev-0.3.3-pre3-geni/streamdev-server.h vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/streamdev-server.h
--- streamdev-0.3.3-pre3-geni/streamdev-server.h 2004-08-17 07:48:04.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/streamdev-server.h 2005-01-12 19:20:36.000000000 -0800
@@ -11,7 +11,7 @@
class cPluginStreamdevServer : public cPlugin {
private:
- static const char *DESCRIPTION;
+ static cString DESCRIPTION;
public:
cPluginStreamdevServer(void);
@@ -19,7 +19,7 @@
virtual const char *Version(void) { return VERSION; }
virtual const char *Description(void);
virtual bool Start(void);
- virtual bool Active(void);
+ virtual bool Active(void);
virtual const char *MainMenuEntry(void);
virtual cOsdObject *MainMenuAction(void);
virtual cMenuSetupPage *SetupMenu(void);
diff -ru streamdev-0.3.3-pre3-geni/tools/select.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/tools/select.c
--- streamdev-0.3.3-pre3-geni/tools/select.c 2004-08-17 05:44:12.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/tools/select.c 2005-01-12 19:31:23.000000000 -0800
@@ -26,11 +26,11 @@
if (TimeoutMs == 0)
return ::select(m_MaxFiled + 1, &m_Rfds, &m_Wfds, NULL, &tv);
- st = time_ms();
+ st = int(cTimeMs::Now());
ms = TimeoutMs;
while (ms > 0 && (res = ::select(m_MaxFiled + 1, &m_Rfds, &m_Wfds, NULL,
&tv)) == -1 && errno == EINTR) {
- et = time_ms();
+ et = int(cTimeMs::Now());
ms -= et - st;
tv.tv_usec = (ms % 1000) * 1000;
tv.tv_sec = ms / 1000;
diff -ru streamdev-0.3.3-pre3-geni/tools/source.c vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/tools/source.c
--- streamdev-0.3.3-pre3-geni/tools/source.c 2004-07-13 11:20:43.000000000 -0700
+++ vdr-1.3.18/PLUGINS/src/streamdev-0.3.3-pre3-geni/tools/source.c 2005-01-12 19:30:54.000000000 -0800
@@ -59,7 +59,7 @@
time_t st;
int ms, offs;
- st = time_ms();
+ st = int(cTimeMs::Now());
ms = TimeoutMs;
offs = 0;
while (Length > 0) {
@@ -77,7 +77,7 @@
Length -= b;
}
- ms -= time_ms() - st;
+ ms -= int(cTimeMs::Now()) - st;
if (ms <= 0) {
errno = ETIMEDOUT;
return false;
@@ -108,7 +108,7 @@
return olen;
}
- st = time_ms();
+ st = int(cTimeMs::Now());
ms = TimeoutMs;
while (m_LineBuffer.Length() < BUFSIZ) {
int b;
@@ -142,7 +142,7 @@
}
}
- ms -= time_ms() - st;
+ ms -= int(cTimeMs::Now()) - st;
if (ms <= 0) {
errno = ETIMEDOUT;
return -1;
@@ -159,7 +159,7 @@
int ms, seqlen, offs;
seqlen = strlen(Seq);
- st = time_ms();
+ st = int(cTimeMs::Now());
ms = TimeoutMs;
offs = 0;
while (Length > 0) {
@@ -181,7 +181,7 @@
return offs;
}
- et = time_ms();
+ et = int(cTimeMs::Now());
ms -= et - st;
if (ms <= 0) {
errno = ETIMEDOUT;
Home |
Main Index |
Thread Index