Fixed "read incomplete section" errors

This commit is contained in:
Klaus Schmidinger 2020-11-24 21:19:49 +01:00
parent ad55da4ef9
commit 56e2ed2628
5 changed files with 14 additions and 10 deletions

View File

@ -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

View File

@ -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).

View File

@ -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;

View File

@ -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);
}
}
}

View File

@ -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);