diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2020-11-24 21:19:49 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2020-11-24 21:19:49 +0100 |
commit | 56e2ed262838e05cbeb2848571dd4c8d45425506 (patch) | |
tree | b0b443369341f17bf2dfc7a9f9df1ece954df29d | |
parent | ad55da4ef95044f68cc337a4b0265b984467cc6f (diff) | |
download | vdr-56e2ed262838e05cbeb2848571dd4c8d45425506.tar.gz vdr-56e2ed262838e05cbeb2848571dd4c8d45425506.tar.bz2 |
Fixed "read incomplete section" errors
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | dvbdevice.c | 8 | ||||
-rw-r--r-- | sections.c | 9 | ||||
-rw-r--r-- | sections.h | 3 |
5 files changed, 14 insertions, 10 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 29a91c90..9e702288 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3633,6 +3633,7 @@ Helmut Binder <cco@aon.at> possible error message for initializing the status variable in cDvbTuner::GetFrontendStatus() and cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this + for fixing "read incomplete section" errors Ulrich Eckhardt <uli@uli-eckhardt.de> for reporting a problem with shutdown after user inactivity in case a plugin is @@ -9536,7 +9536,7 @@ Video Disk Recorder Revision History cDvbTuner::GetSignalStats() to avoid problems with drivers that don't do this (thanks to Helmut Binder). -2020-11-22: +2020-11-24: - Fixed multiple recording entries in case a recording is started during the initial reading of the video directory (reported by Claus Muus). @@ -9546,3 +9546,4 @@ Video Disk Recorder Revision History - Fixed allocating memory for cImage (reported by Christoph Haubrich). - Fixed parsing the '-l' command line option (reported by Harald Milz). - Fixed possible compilation errors with libjpeg (thanks to Bernd Kuhls). +- Fixed "read incomplete section" errors (thanks to Helmut Binder). diff --git a/dvbdevice.c b/dvbdevice.c index a7797203..b5153db0 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 4.27 2020/10/16 13:58:45 kls Exp $ + * $Id: dvbdevice.c 4.28 2020/11/24 21:19:49 kls Exp $ */ #include "dvbdevice.h" @@ -2138,11 +2138,17 @@ bool cDvbDevice::SetPid(cPidHandle *Handle, int Type, bool On) return true; } +#define RB_NUM_SECTIONS 8 // default: 2 sections = 8192 bytes + int cDvbDevice::OpenFilter(u_short Pid, u_char Tid, u_char Mask) { cString FileName = DvbName(DEV_DVB_DEMUX, adapter, frontend); int f = open(FileName, O_RDWR | O_NONBLOCK); if (f >= 0) { + if (Pid == EITPID) { // increase ringbuffer size for EIT + if (ioctl(f, DMX_SET_BUFFER_SIZE, MAX_SECTION_SIZE * RB_NUM_SECTIONS) < 0) + dsyslog("OpenFilter (pid=%d, tid=%02X): ioctl DMX_SET_BUFFER_SIZE failed", Pid, Tid); + } dmx_sct_filter_params sctFilterParams; memset(&sctFilterParams, 0, sizeof(sctFilterParams)); sctFilterParams.pid = Pid; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sections.c 4.1 2019/05/28 14:09:04 kls Exp $ + * $Id: sections.c 4.2 2020/11/24 21:19:49 kls Exp $ */ #include "sections.h" @@ -48,7 +48,6 @@ cSectionHandler::cSectionHandler(cDevice *Device) statusCount = 0; on = false; waitForLock = false; - lastIncompleteSection = 0; Start(); } @@ -212,10 +211,8 @@ void cSectionHandler::Action(void) fi->Process(pid, tid, buf, len); } } - else if (time(NULL) - lastIncompleteSection > 10) { // log them only every 10 seconds - dsyslog("read incomplete section - len = %d, r = %d", len, r); - lastIncompleteSection = time(NULL); - } + else + dsyslog("tp %d (%d/%02X) read incomplete section - len = %d, r = %d", Transponder(), fh->filterData.pid, buf[0], len, r); } } } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sections.h 1.5 2005/08/13 11:23:55 kls Exp $ + * $Id: sections.h 4.1 2020/11/24 21:19:49 kls Exp $ */ #ifndef __SECTIONS_H @@ -27,7 +27,6 @@ private: cDevice *device; int statusCount; bool on, waitForLock; - time_t lastIncompleteSection; cList<cFilter> filters; cList<cFilterHandle> filterHandles; void Add(const cFilterData *FilterData); |