summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/device.c8
-rw-r--r--client/device.h1
-rw-r--r--client/filter.c155
-rw-r--r--client/filter.h3
-rw-r--r--client/po/de_DE.po31
-rw-r--r--client/po/es_ES.po31
-rw-r--r--client/po/fi_FI.po29
-rw-r--r--client/po/fr_FR.po31
-rw-r--r--client/po/it_IT.po31
-rw-r--r--client/po/lt_LT.po31
-rw-r--r--client/po/pl_PL.po5
-rw-r--r--client/po/ru_RU.po31
-rwxr-xr-xclient/po/sk_SK.po6
-rw-r--r--client/setup.c5
-rw-r--r--client/setup.h1
15 files changed, 242 insertions, 157 deletions
diff --git a/client/device.c b/client/device.c
index 3bc0dbd..25825b8 100644
--- a/client/device.c
+++ b/client/device.c
@@ -282,6 +282,14 @@ int cStreamdevDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask) {
return -1;
}
+void cStreamdevDevice::CloseFilter(int Handle) {
+
+ if(m_Filters)
+ m_Filters->CloseFilter(Handle);
+ else
+ esyslog("cStreamdevDevice::CloseFilter called while m_Filters is null");
+}
+
bool cStreamdevDevice::ReInit(bool Disable) {
LOCK_THREAD;
m_Disabled = Disable;
diff --git a/client/device.h b/client/device.h
index c4e3a43..9d4bedb 100644
--- a/client/device.h
+++ b/client/device.h
@@ -45,6 +45,7 @@ protected:
virtual bool GetTSPacket(uchar *&Data);
virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
+ virtual void CloseFilter(int Handle);
public:
cStreamdevDevice(void);
diff --git a/client/filter.c b/client/filter.c
index 8606770..cf18fd5 100644
--- a/client/filter.c
+++ b/client/filter.c
@@ -6,12 +6,16 @@
#include "client/socket.h"
#include "tools/select.h"
#include "common.h"
+#include <sys/ioctl.h>
+#include <string.h>
#include <vdr/device.h>
#define PID_MASK_HI 0x1F
// --- cStreamdevFilter ------------------------------------------------------
+static int FilterSockBufSize_warn = 0;
+
class cStreamdevFilter: public cListObject {
private:
uchar m_Buffer[4096];
@@ -20,6 +24,10 @@ private:
u_short m_Pid;
u_char m_Tid;
u_char m_Mask;
+#ifdef TIOCOUTQ
+ unsigned long m_maxq;
+ unsigned long m_flushed;
+#endif
public:
cStreamdevFilter(u_short Pid, u_char Tid, u_char Mask);
@@ -29,7 +37,6 @@ public:
bool PutSection(const uchar *Data, int Length, bool Pusi);
int ReadPipe(void) const { return m_Pipe[0]; }
- bool IsClosed(void);
void Reset(void);
u_short Pid(void) const { return m_Pid; }
@@ -47,6 +54,10 @@ cStreamdevFilter::cStreamdevFilter(u_short Pid, u_char Tid, u_char Mask) {
m_Tid = Tid;
m_Mask = Mask;
m_Pipe[0] = m_Pipe[1] = -1;
+#ifdef TIOCOUTQ
+ m_flushed = 0;
+ m_maxq = 0;
+#endif
#ifdef SOCK_SEQPACKET
// SOCK_SEQPACKET (since kernel 2.6.4)
@@ -58,7 +69,46 @@ cStreamdevFilter::cStreamdevFilter(u_short Pid, u_char Tid, u_char Mask) {
esyslog("streamdev-client: couldn't open section filter socket: %m");
}
- else if(fcntl(m_Pipe[0], F_SETFL, O_NONBLOCK) != 0 ||
+ // Set buffer for socketpair. During certain situations, such as startup, channel/transponder
+ // change, VDR may lag in reading data. Instead of discarding it, we can buffer it.
+ // Buffer size required may be up to 4MByte.
+
+ if(StreamdevClientSetup.FilterSockBufSize) {
+ int sbs = StreamdevClientSetup.FilterSockBufSize;
+ int sbs2;
+ unsigned int sbss = sizeof(sbs);
+ int r;
+
+ r = setsockopt(m_Pipe[1], SOL_SOCKET, SO_SNDBUF, (char *)&sbs, sbss);
+
+ if(r < 0) {
+ isyslog("streamdev-client: setsockopt(SO_SNDBUF, %d) = %s", sbs, strerror(errno));
+ }
+ sbs2 = 0;
+ r = getsockopt(m_Pipe[1], SOL_SOCKET, SO_SNDBUF, (char *)&sbs2, &sbss);
+ if(r < 0 || !sbss || !sbs2) {
+ isyslog("streamdev-client: getsockopt(SO_SNDBUF, &%d, &%d) = %s", sbs2, sbss, strerror(errno));
+ } else {
+ // Linux actually returns double the requested size
+ // if everything works fine. And it actually buffers up to that double amount
+ // as can be seen from observing TIOCOUTQ (kernel 3.7/2014).
+
+ if(sbs2 > sbs)
+ sbs2 /= 2;
+ if(sbs2 < sbs) {
+ if(FilterSockBufSize_warn != sbs2) {
+ isyslog("streamdev-client: ******************************************************");
+ isyslog("streamdev-client: getsockopt(SO_SNDBUF) = %d < %d (configured).", sbs2, sbs);
+ isyslog("streamdev-client: Consider increasing system buffer size:");
+ isyslog("streamdev-client: 'sysctl net.core.wmem_max=%d'", sbs);
+ isyslog("streamdev-client: ******************************************************");
+ FilterSockBufSize_warn = sbs2;
+ }
+ }
+ }
+ }
+
+ if(fcntl(m_Pipe[0], F_SETFL, O_NONBLOCK) != 0 ||
fcntl(m_Pipe[1], F_SETFL, O_NONBLOCK) != 0) {
esyslog("streamdev-client: couldn't set section filter socket to non-blocking mode: %m");
}
@@ -67,11 +117,12 @@ cStreamdevFilter::cStreamdevFilter(u_short Pid, u_char Tid, u_char Mask) {
cStreamdevFilter::~cStreamdevFilter() {
Dprintf("~cStreamdevFilter %p\n", this);
- // ownership of handle m_Pipe[0] has been transferred to VDR section handler
- //if (m_Pipe[0] >= 0)
- // close(m_Pipe[0]);
- if (m_Pipe[1] >= 0)
+ if (m_Pipe[0] >= 0) {
+ close(m_Pipe[0]);
+ }
+ if (m_Pipe[1] >= 0) {
close(m_Pipe[1]);
+ }
}
bool cStreamdevFilter::PutSection(const uchar *Data, int Length, bool Pusi) {
@@ -94,13 +145,42 @@ bool cStreamdevFilter::PutSection(const uchar *Data, int Length, bool Pusi) {
int length = (((m_Buffer[1] & 0x0F) << 8) | m_Buffer[2]) + 3;
if (m_Used == length) {
m_Used = 0;
- if (write(m_Pipe[1], m_Buffer, length) < 0) {
- if(errno == EAGAIN || errno == EWOULDBLOCK)
- dsyslog("cStreamdevFilter::PutSection socket overflow, "
- "Pid %4d Tid %3d", m_Pid, m_Tid);
+#ifdef TIOCOUTQ
+ // If we can determine the queue size of the socket,
+ // we flush rather then let the socket drop random packets.
+ // This ensures that we have more contiguous set of packets
+ // on the receiver side.
+ if(m_flushed) {
+ unsigned long queue = 0;
+ ioctl(m_Pipe[1], TIOCOUTQ, &queue);
+ if(queue > m_maxq)
+ m_maxq = queue;
+ if(queue * 2 < m_maxq) {
+ dsyslog("cStreamdevFilter::PutSection(Pid:%d Tid: %d): "
+ "Flushed %ld bytes, max queue: %ld",
+ m_Pid, m_Tid, m_flushed, m_maxq);
+ m_flushed = m_maxq = 0;
- else
+ } else {
+ m_flushed += length;
+ }
+ }
+ if(!m_flushed)
+#endif
+ if(write(m_Pipe[1], m_Buffer, length) < 0) {
+ if(errno != EAGAIN && errno != EWOULDBLOCK) {
+ dsyslog("cStreamdevFilter::PutSection(Pid:%d Tid: %d): error: %s",
+ m_Pid, m_Tid, strerror(errno));
return false;
+ } else {
+#ifdef TIOCOUTQ
+ m_flushed += length;
+#else
+ dsyslog("cStreamdevFilter::PutSection(Pid:%d Tid: %d): "
+ "Dropping packet %ld bytes (queue overflow)",
+ m_Pid, m_Tid, length);
+#endif
+ }
}
}
@@ -123,25 +203,6 @@ void cStreamdevFilter::Reset(void) {
m_Used = 0;
}
-bool cStreamdevFilter::IsClosed(void) {
- char m_Buffer[3] = {0,0,0}; /* tid 0, 0 bytes */
-
- // Test if pipe/socket has been closed by writing empty section
- if (write(m_Pipe[1], m_Buffer, 3) < 0 &&
- errno != EAGAIN &&
- errno != EWOULDBLOCK) {
-
- if (errno != ECONNREFUSED &&
- errno != ECONNRESET &&
- errno != EPIPE)
- esyslog("cStreamdevFilter::IsClosed failed: %m");
-
- return true;
- }
-
- return false;
-}
-
// --- cStreamdevFilters -----------------------------------------------------
cStreamdevFilters::cStreamdevFilters(cClientSocket *ClientSocket):
@@ -155,8 +216,6 @@ cStreamdevFilters::~cStreamdevFilters() {
}
int cStreamdevFilters::OpenFilter(u_short Pid, u_char Tid, u_char Mask) {
- CarbageCollect();
-
cStreamdevFilter *f = new cStreamdevFilter(Pid, Tid, Mask);
int fh = f->ReadPipe();
@@ -167,31 +226,18 @@ int cStreamdevFilters::OpenFilter(u_short Pid, u_char Tid, u_char Mask) {
return fh;
}
-void cStreamdevFilters::CarbageCollect(void) {
+void cStreamdevFilters::CloseFilter(int Handle) {
LOCK_THREAD;
- for (cStreamdevFilter *fi = First(); fi;) {
- if (fi->IsClosed()) {
- if (errno == ECONNREFUSED ||
- errno == ECONNRESET ||
- errno == EPIPE) {
- m_ClientSocket->SetFilter(fi->Pid(), fi->Tid(), fi->Mask(), false);
- Dprintf("cStreamdevFilters::CarbageCollector: filter closed: Pid %4d, Tid %3d, Mask %2x (%d filters left)",
- (int)fi->Pid(), (int)fi->Tid(), fi->Mask(), Count()-1);
-
- cStreamdevFilter *next = Prev(fi);
- Del(fi);
- fi = next ? Next(next) : First();
- } else {
- esyslog("cStreamdevFilters::CarbageCollector() error: "
- "Pid %4d, Tid %3d, Mask %2x (%d filters left) failed",
- (int)fi->Pid(), (int)fi->Tid(), fi->Mask(), Count()-1);
- LOG_ERROR;
- fi = Next(fi);
- }
- } else {
- fi = Next(fi);
+
+ for (cStreamdevFilter *fi = First(); fi; fi = Next(fi)) {
+ if(fi->ReadPipe() == Handle) {
+ // isyslog("cStreamdevFilters::CloseFilter(%d): Pid %4d, Tid %3d, Mask %2x (%d filters left)\n",
+ // Handle, (int)fi->Pid(), (int)fi->Tid(), fi->Mask(), Count()-1);
+ Del(fi);
+ return;
}
}
+ esyslog("cStreamdevFilters::CloseFilter(%d): failed (%d filters left)\n", Handle, Count()-1);
}
bool cStreamdevFilters::ReActivateFilters(void)
@@ -199,7 +245,6 @@ bool cStreamdevFilters::ReActivateFilters(void)
LOCK_THREAD;
bool res = true;
- CarbageCollect();
for (cStreamdevFilter *fi = First(); fi; fi = Next(fi)) {
res = m_ClientSocket->SetFilter(fi->Pid(), fi->Tid(), fi->Mask(), true) && res;
Dprintf("ReActivateFilters(%d, %d, %d) -> %s", fi->Pid(), fi->Tid(), fi->Mask(), res ? "Ok" :"FAIL");
diff --git a/client/filter.h b/client/filter.h
index a096248..e962c34 100644
--- a/client/filter.h
+++ b/client/filter.h
@@ -20,8 +20,6 @@ private:
protected:
virtual void Action(void);
- void CarbageCollect(void);
-
bool ReActivateFilters(void);
public:
@@ -30,6 +28,7 @@ public:
void SetConnection(int Handle);
int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
+ void CloseFilter(int Handle);
};
#endif // VDR_STREAMDEV_FILTER_H
diff --git a/client/po/de_DE.po b/client/po/de_DE.po
index f347fe9..a3d1c8b 100644
--- a/client/po/de_DE.po
+++ b/client/po/de_DE.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
-"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2013-01-20 23:46+0100\n"
+"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
+"POT-Creation-Date: 2014-10-20 22:57+0200\n"
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
"Last-Translator: Frank Schmirler <vdrdev@schmirler.de>\n"
"Language-Team: German <vdr@linuxtv.org>\n"
@@ -16,18 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "VTP Streaming Client"
-
-msgid "Suspend Server"
-msgstr "Server pausieren"
-
-msgid "Server is suspended"
-msgstr "Server ist pausiert"
-
-msgid "Couldn't suspend Server!"
-msgstr "Konnte Server nicht pausieren!"
-
msgid "Hide Mainmenu Entry"
msgstr "Hauptmenüeintrag verstecken"
@@ -46,6 +34,9 @@ msgstr "Timeout (s)"
msgid "Filter Streaming"
msgstr "Filter-Daten streamen"
+msgid "Filter SockBufSize"
+msgstr "Filter Socket Puffergröße"
+
msgid "Live TV Priority"
msgstr "Live TV Priorität"
@@ -57,3 +48,15 @@ msgstr "Maximale Priorität"
msgid "Broadcast Systems / Cost"
msgstr "Empfangssysteme / Kosten"
+
+msgid "VTP Streaming Client"
+msgstr "VTP Streaming Client"
+
+msgid "Suspend Server"
+msgstr "Server pausieren"
+
+msgid "Server is suspended"
+msgstr "Server ist pausiert"
+
+msgid "Couldn't suspend Server!"
+msgstr "Konnte Server nicht pausieren!"
diff --git a/client/po/es_ES.po b/client/po/es_ES.po
index 5182453..15cb64f 100644
--- a/client/po/es_ES.po
+++ b/client/po/es_ES.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
-"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2013-01-28 22:16+0100\n"
+"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2010-06-19 03:58+0100\n"
"Last-Translator: Javier Bradineras <jbradi@hotmail.com>\n"
"Language-Team: Spanish <vdr@linuxtv.org>\n"
@@ -16,18 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "Cliente trasmisión VTP"
-
-msgid "Suspend Server"
-msgstr "Suspender servidor"
-
-msgid "Server is suspended"
-msgstr "Servidor en suspensión"
-
-msgid "Couldn't suspend Server!"
-msgstr "Imposible suspender el servidor!"
-
msgid "Hide Mainmenu Entry"
msgstr "Ocultar entrada en menú principal"
@@ -46,6 +34,9 @@ msgstr ""
msgid "Filter Streaming"
msgstr "Filtrar transmisión"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr ""
@@ -57,3 +48,15 @@ msgstr "Prioridad máxima"
msgid "Broadcast Systems / Cost"
msgstr ""
+
+msgid "VTP Streaming Client"
+msgstr "Cliente trasmisión VTP"
+
+msgid "Suspend Server"
+msgstr "Suspender servidor"
+
+msgid "Server is suspended"
+msgstr "Servidor en suspensión"
+
+msgid "Couldn't suspend Server!"
+msgstr "Imposible suspender el servidor!"
diff --git a/client/po/fi_FI.po b/client/po/fi_FI.po
index 6b55ac5..afe56a4 100644
--- a/client/po/fi_FI.po
+++ b/client/po/fi_FI.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
-"POT-Creation-Date: 2013-01-28 22:16+0100\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
"Last-Translator: Rolf Ahrenberg\n"
"Language-Team: Finnish <vdr@linuxtv.org>\n"
@@ -16,18 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "VTP-suoratoistoasiakas"
-
-msgid "Suspend Server"
-msgstr "Pysäytä palvelin"
-
-msgid "Server is suspended"
-msgstr "Palvelin on pysäytetty"
-
-msgid "Couldn't suspend Server!"
-msgstr "Palvelinta ei onnistuttu pysäyttämään!"
-
msgid "Hide Mainmenu Entry"
msgstr "Piilota valinta päävalikosta"
@@ -46,6 +34,9 @@ msgstr "Yhteyden aikakatkaisu (s)"
msgid "Filter Streaming"
msgstr "Suodatetun tiedon suoratoisto"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr "Live-katselun prioriteetti"
@@ -57,3 +48,15 @@ msgstr "Suurin prioriteetti"
msgid "Broadcast Systems / Cost"
msgstr "Lähetysjärjestelmien suhdeluku"
+
+msgid "VTP Streaming Client"
+msgstr "VTP-suoratoistoasiakas"
+
+msgid "Suspend Server"
+msgstr "Pysäytä palvelin"
+
+msgid "Server is suspended"
+msgstr "Palvelin on pysäytetty"
+
+msgid "Couldn't suspend Server!"
+msgstr "Palvelinta ei onnistuttu pysäyttämään!"
diff --git a/client/po/fr_FR.po b/client/po/fr_FR.po
index 7d938f0..1441df5 100644
--- a/client/po/fr_FR.po
+++ b/client/po/fr_FR.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
-"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2013-01-28 22:16+0100\n"
+"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2008-03-30 02:11+0200\n"
"Last-Translator: micky979 <micky979@free.fr>\n"
"Language-Team: French <vdr@linuxtv.org>\n"
@@ -16,18 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-15\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "Client de streaming VTP"
-
-msgid "Suspend Server"
-msgstr "Suspendre le serveur"
-
-msgid "Server is suspended"
-msgstr "Le serveur est suspendu"
-
-msgid "Couldn't suspend Server!"
-msgstr "Impossible de suspendre le serveur!"
-
msgid "Hide Mainmenu Entry"
msgstr "Masquer dans le menu principal"
@@ -46,6 +34,9 @@ msgstr ""
msgid "Filter Streaming"
msgstr "Filtre streaming"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr ""
@@ -57,3 +48,15 @@ msgstr ""
msgid "Broadcast Systems / Cost"
msgstr ""
+
+msgid "VTP Streaming Client"
+msgstr "Client de streaming VTP"
+
+msgid "Suspend Server"
+msgstr "Suspendre le serveur"
+
+msgid "Server is suspended"
+msgstr "Le serveur est suspendu"
+
+msgid "Couldn't suspend Server!"
+msgstr "Impossible de suspendre le serveur!"
diff --git a/client/po/it_IT.po b/client/po/it_IT.po
index c311507..a1323c2 100644
--- a/client/po/it_IT.po
+++ b/client/po/it_IT.po
@@ -8,8 +8,8 @@
msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
-"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2013-01-28 22:16+0100\n"
+"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2012-06-10 20:34+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: Italian <vdr@linuxtv.org>\n"
@@ -18,18 +18,6 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "Client trasmissione VTP"
-
-msgid "Suspend Server"
-msgstr "Sospendi Server"
-
-msgid "Server is suspended"
-msgstr "Server sospeso"
-
-msgid "Couldn't suspend Server!"
-msgstr "Impossibile sospendere il server!"
-
msgid "Hide Mainmenu Entry"
msgstr "Nascondi voce menu principale"
@@ -48,6 +36,9 @@ msgstr "Scadenza (s)"
msgid "Filter Streaming"
msgstr "Filtra trasmissione"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr "Priorità TV dal vivo"
@@ -59,3 +50,15 @@ msgstr "Priorità massima"
msgid "Broadcast Systems / Cost"
msgstr "Costo / sistemi trasmissione"
+
+msgid "VTP Streaming Client"
+msgstr "Client trasmissione VTP"
+
+msgid "Suspend Server"
+msgstr "Sospendi Server"
+
+msgid "Server is suspended"
+msgstr "Server sospeso"
+
+msgid "Couldn't suspend Server!"
+msgstr "Impossibile sospendere il server!"
diff --git a/client/po/lt_LT.po b/client/po/lt_LT.po
index 409c267..01927f6 100644
--- a/client/po/lt_LT.po
+++ b/client/po/lt_LT.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
-"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2013-01-28 22:16+0100\n"
+"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2009-11-26 21:57+0200\n"
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
@@ -16,18 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "VTP transliavimo standartas"
-
-msgid "Suspend Server"
-msgstr "Sustabdyti serverį"
-
-msgid "Server is suspended"
-msgstr "Serveris sustabdytas"
-
-msgid "Couldn't suspend Server!"
-msgstr "Negali sustabdyti serverio!"
-
msgid "Hide Mainmenu Entry"
msgstr "Paslėpti pagrindinio meniu įrašą"
@@ -46,6 +34,9 @@ msgstr ""
msgid "Filter Streaming"
msgstr "Filtruoti transliavimÄ…"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr ""
@@ -57,3 +48,15 @@ msgstr "Maksimalus prioritetas"
msgid "Broadcast Systems / Cost"
msgstr ""
+
+msgid "VTP Streaming Client"
+msgstr "VTP transliavimo standartas"
+
+msgid "Suspend Server"
+msgstr "Sustabdyti serverį"
+
+msgid "Server is suspended"
+msgstr "Serveris sustabdytas"
+
+msgid "Couldn't suspend Server!"
+msgstr "Negali sustabdyti serverio!"
diff --git a/client/po/pl_PL.po b/client/po/pl_PL.po
index 7058f96..599139c 100644
--- a/client/po/pl_PL.po
+++ b/client/po/pl_PL.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-streamdev-client 0.6.1-git\n"
"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
-"POT-Creation-Date: 2014-11-20 14:11+0100\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2014-11-24 18:07+0100\n"
"Last-Translator: Tomasz Maciej Nowak <tomek_n@o2.pl>\n"
"Language-Team: Polish <vdr@linuxtv.org>\n"
@@ -35,6 +35,9 @@ msgstr "Czas oczekiwania (s)"
msgid "Filter Streaming"
msgstr "Filtruj strumieñ"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr "Priorytet lokalnych ur±dzeñ"
diff --git a/client/po/ru_RU.po b/client/po/ru_RU.po
index 8f5a9b2..b2ff56c 100644
--- a/client/po/ru_RU.po
+++ b/client/po/ru_RU.po
@@ -6,8 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: streamdev 0.5.0\n"
-"Report-Msgid-Bugs-To: <http://www.vdr-developer.org/mantisbt/>\n"
-"POT-Creation-Date: 2013-01-28 22:16+0100\n"
+"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: 2008-06-26 15:36+0100\n"
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
"Language-Team: Russian <vdr@linuxtv.org>\n"
@@ -16,18 +16,6 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-5\n"
"Content-Transfer-Encoding: 8bit\n"
-msgid "VTP Streaming Client"
-msgstr "VTP Streaming ÚÛØÕÝâ"
-
-msgid "Suspend Server"
-msgstr "¾áâÐÝÞÒØâì áÕàÒÕà"
-
-msgid "Server is suspended"
-msgstr "ÁÕàÒÕà ÞáâÐÝÞÒÛÕÝ"
-
-msgid "Couldn't suspend Server!"
-msgstr "ÝÕ ÜÞÓã ÞáâÐÝÞÒØâì áÕàÒÕà"
-
msgid "Hide Mainmenu Entry"
msgstr "ÁßàïâÐâì Ò ÓÛÐÒÝÞÜ ÜÕÝî"
@@ -46,6 +34,9 @@ msgstr ""
msgid "Filter Streaming"
msgstr "ÄØÛìâà ßÞâÞÚÐ"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr ""
@@ -57,3 +48,15 @@ msgstr ""
msgid "Broadcast Systems / Cost"
msgstr ""
+
+msgid "VTP Streaming Client"
+msgstr "VTP Streaming ÚÛØÕÝâ"
+
+msgid "Suspend Server"
+msgstr "¾áâÐÝÞÒØâì áÕàÒÕà"
+
+msgid "Server is suspended"
+msgstr "ÁÕàÒÕà ÞáâÐÝÞÒÛÕÝ"
+
+msgid "Couldn't suspend Server!"
+msgstr "ÝÕ ÜÞÓã ÞáâÐÝÞÒØâì áÕàÒÕà"
diff --git a/client/po/sk_SK.po b/client/po/sk_SK.po
index 65f9a10..76374f6 100755
--- a/client/po/sk_SK.po
+++ b/client/po/sk_SK.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: streamdev_SK\n"
"Report-Msgid-Bugs-To: <vdrdev@schmirler.de>\n"
-"POT-Creation-Date: 2013-03-13 14:20+0100\n"
+"POT-Creation-Date: 2015-01-16 22:32+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: Slovak <hrala.milan@gmail.com>\n"
@@ -36,6 +36,9 @@ msgstr "Èasový limit (s)"
msgid "Filter Streaming"
msgstr "Filtrova» dátový prúd"
+msgid "Filter SockBufSize"
+msgstr ""
+
msgid "Live TV Priority"
msgstr "Priorita ¾ivého vysielania"
@@ -59,4 +62,3 @@ msgstr "Server je doèasne pozastavený"
msgid "Couldn't suspend Server!"
msgstr "Server sa nepodarilo pozastavi»!"
-
diff --git a/client/setup.c b/client/setup.c
index 691ab35..1f2960d 100644
--- a/client/setup.c
+++ b/client/setup.c
@@ -26,6 +26,7 @@ cStreamdevClientSetup::cStreamdevClientSetup(void) {
NumProvidedSystems = 1;
#endif
strcpy(RemoteIp, "");
+ FilterSockBufSize = 0;
}
bool cStreamdevClientSetup::SetupParse(const char *Name, const char *Value) {
@@ -43,6 +44,7 @@ bool cStreamdevClientSetup::SetupParse(const char *Name, const char *Value) {
else if (strcmp(Name, "LivePriority") == 0) LivePriority = atoi(Value);
else if (strcmp(Name, "MinPriority") == 0) MinPriority = atoi(Value);
else if (strcmp(Name, "MaxPriority") == 0) MaxPriority = atoi(Value);
+ else if (strcmp(Name, "FilterSockBufSize") == 0) FilterSockBufSize = atoi(Value);
#if APIVERSNUM >= 10700
else if (strcmp(Name, "NumProvidedSystems") == 0) NumProvidedSystems = atoi(Value);
#endif
@@ -60,6 +62,8 @@ cStreamdevClientMenuSetupPage::cStreamdevClientMenuSetupPage(cPluginStreamdevCli
Add(new cMenuEditIntItem (tr("Remote Port"), &m_NewSetup.RemotePort, 0, 65535));
Add(new cMenuEditIntItem (tr("Timeout (s)"), &m_NewSetup.Timeout, 1, 15));
Add(new cMenuEditBoolItem(tr("Filter Streaming"), &m_NewSetup.StreamFilters));
+ if(m_NewSetup.StreamFilters)
+ Add(new cMenuEditIntItem (tr("Filter SockBufSize"), &m_NewSetup.FilterSockBufSize, 0, 8192000));
Add(new cMenuEditIntItem (tr("Live TV Priority"), &m_NewSetup.LivePriority, MINPRIORITY, MAXPRIORITY));
Add(new cMenuEditIntItem (tr("Minimum Priority"), &m_NewSetup.MinPriority, MINPRIORITY, MAXPRIORITY));
Add(new cMenuEditIntItem (tr("Maximum Priority"), &m_NewSetup.MaxPriority, MINPRIORITY, MAXPRIORITY));
@@ -90,6 +94,7 @@ void cStreamdevClientMenuSetupPage::Store(void) {
#if APIVERSNUM >= 10700
SetupStore("NumProvidedSystems", m_NewSetup.NumProvidedSystems);
#endif
+ SetupStore("FilterSockBufSize", m_NewSetup.FilterSockBufSize);
StreamdevClientSetup = m_NewSetup;
diff --git a/client/setup.h b/client/setup.h
index 5401271..e9c172d 100644
--- a/client/setup.h
+++ b/client/setup.h
@@ -17,6 +17,7 @@ struct cStreamdevClientSetup {
int RemotePort;
int Timeout;
int StreamFilters;
+ int FilterSockBufSize;
int HideMenuEntry;
int LivePriority;
int MinPriority;