Fixed dropping EPG events that have a zero start time or duration, in case it's an NVOD event

This commit is contained in:
Klaus Schmidinger 2005-06-11 16:05:11 +02:00
parent 3513e3d07e
commit 903a2d5850
3 changed files with 7 additions and 3 deletions

View File

@ -1327,6 +1327,8 @@ Chad Flynt <hoochster@sofnet.com>
Chris Warren <dvb@ixalon.net> Chris Warren <dvb@ixalon.net>
for pointing out that the call to system("sync") in SpinUpDisk() should be for pointing out that the call to system("sync") in SpinUpDisk() should be
replaced with fsync(f) to avoid problems on NPTL systems replaced with fsync(f) to avoid problems on NPTL systems
for fixing dropping EPG events that have a zero start time or duration, in case it's
an NVOD event
Luca Olivetti <luca@ventoso.org> Luca Olivetti <luca@ventoso.org>
for making cDevice::AttachPlayer() keep the track language codes and descriptions for making cDevice::AttachPlayer() keep the track language codes and descriptions

View File

@ -3599,3 +3599,5 @@ Video Disk Recorder Revision History
first day not as full date, but just day of month (thanks to Henrik Niehaus for first day not as full date, but just day of month (thanks to Henrik Niehaus for
reporting this one). reporting this one).
- Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald). - Removed an unnecessary #include from osd.c (thanks to Wolfgang Rohdewald).
- Fixed dropping EPG events that have a zero start time or duration, in case it's
an NVOD event (thanks to Chris Warren).

6
eit.c
View File

@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>. * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
* *
* $Id: eit.c 1.107 2005/05/28 11:35:55 kls Exp $ * $Id: eit.c 1.108 2005/06/11 15:31:21 kls Exp $
*/ */
#include "eit.h" #include "eit.h"
@ -48,8 +48,8 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data)
SI::EIT::Event SiEitEvent; SI::EIT::Event SiEitEvent;
for (SI::Loop::Iterator it; eventLoop.getNext(SiEitEvent, it); ) { for (SI::Loop::Iterator it; eventLoop.getNext(SiEitEvent, it); ) {
// Drop bogus events. // Drop bogus events - but keep NVOD reference events, where all bits of the start time field are set to 1, resulting in a negative number.
if (SiEitEvent.getStartTime() == 0 || SiEitEvent.getDuration() == 0) if (SiEitEvent.getStartTime() == 0 || SiEitEvent.getStartTime() > 0 && SiEitEvent.getDuration() == 0)
continue; continue;
Empty = false; Empty = false;
cEvent *newEvent = NULL; cEvent *newEvent = NULL;