mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Added a workaround for broadcasters who set an event to status "not running" where this is inappropriate; implicitly setting events to "not running" is now also logged
This commit is contained in:
parent
12d8ef5a21
commit
abdab18807
4
HISTORY
4
HISTORY
@ -9348,7 +9348,7 @@ Video Disk Recorder Revision History
|
|||||||
Senzel).
|
Senzel).
|
||||||
- Official release.
|
- Official release.
|
||||||
|
|
||||||
2019-05-13: Version 2.4.1
|
2019-05-20: Version 2.4.1
|
||||||
|
|
||||||
- Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported
|
- Fixed handling the tfRecording flag in the SVDRP commands MODT and UPDT (reported
|
||||||
by Johann Friedrichs).
|
by Johann Friedrichs).
|
||||||
@ -9405,3 +9405,5 @@ Video Disk Recorder Revision History
|
|||||||
- Fixed a compiler warning in cIndexFile::ConvertToPes() and added __attribute__((packed))
|
- Fixed a compiler warning in cIndexFile::ConvertToPes() and added __attribute__((packed))
|
||||||
to tIndexPes and tIndexTs (suggested by Helmut Binder).
|
to tIndexPes and tIndexTs (suggested by Helmut Binder).
|
||||||
- Fixed handling repeat function for keyboards.
|
- Fixed handling repeat function for keyboards.
|
||||||
|
- Added a workaround for broadcasters who set an event to status "not running" where
|
||||||
|
this is inappropriate; implicitly setting events to "not running" is now also logged.
|
||||||
|
34
eit.c
34
eit.c
@ -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 4.6 2018/11/15 16:33:58 kls Exp $
|
* $Id: eit.c 4.7 2019/05/20 09:55:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eit.h"
|
#include "eit.h"
|
||||||
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#define VALID_TIME (31536000 * 2) // two years
|
#define VALID_TIME (31536000 * 2) // two years
|
||||||
|
|
||||||
|
#define DBGEIT 0
|
||||||
|
|
||||||
// --- cEIT ------------------------------------------------------------------
|
// --- cEIT ------------------------------------------------------------------
|
||||||
|
|
||||||
class cEIT : public SI::EIT {
|
class cEIT : public SI::EIT {
|
||||||
@ -130,8 +132,34 @@ cEIT::cEIT(cSectionSyncerHash &SectionSyncerHash, int Source, u_char Tid, const
|
|||||||
if (pEvent->TableID() > 0x4E) // for backwards compatibility, table ids less than 0x4E are never overwritten
|
if (pEvent->TableID() > 0x4E) // for backwards compatibility, table ids less than 0x4E are never overwritten
|
||||||
pEvent->SetTableID(Tid);
|
pEvent->SetTableID(Tid);
|
||||||
if (Tid == 0x4E) { // we trust only the present/following info on the actual TS
|
if (Tid == 0x4E) { // we trust only the present/following info on the actual TS
|
||||||
if (SiEitEvent.getRunningStatus() >= SI::RunningStatusNotRunning)
|
int RunningStatus = SiEitEvent.getRunningStatus();
|
||||||
pSchedule->SetRunningStatus(pEvent, SiEitEvent.getRunningStatus(), Channel);
|
#if DBGEIT
|
||||||
|
if (Process)
|
||||||
|
dsyslog("channel %d (%s) event %s status %d (raw data from '%s' section)", Channel->Number(), Channel->Name(), *pEvent->ToDescr(), RunningStatus, getSectionNumber() ? "following" : "present");
|
||||||
|
#endif
|
||||||
|
if (RunningStatus >= SI::RunningStatusNotRunning) {
|
||||||
|
// Workaround for broadcasters who set an event to status "not running" where
|
||||||
|
// this is inappropriate:
|
||||||
|
if (RunningStatus != pEvent->RunningStatus()) { // if the running status of the event has changed...
|
||||||
|
if (RunningStatus == SI::RunningStatusNotRunning) { // ...and the new status is "not running"...
|
||||||
|
int OverrideStatus = -1;
|
||||||
|
if (getSectionNumber() == 0) { // ...and if this the "present" event...
|
||||||
|
if (pEvent->RunningStatus() == SI::RunningStatusPausing) // ...and if the event has already been set to "pausing"...
|
||||||
|
OverrideStatus = SI::RunningStatusPausing; // ...then we ignore the faulty new status and stay with "pausing"
|
||||||
|
}
|
||||||
|
else // ...and if this is the "following" event...
|
||||||
|
OverrideStatus = SI::RunningStatusUndefined; // ...then we ignore the faulty new status and fall back to "undefined"
|
||||||
|
if (OverrideStatus >= 0) {
|
||||||
|
#if DBGEIT
|
||||||
|
if (Process)
|
||||||
|
dsyslog("channel %d (%s) event %s status %d (ignored status %d from '%s' section)", Channel->Number(), Channel->Name(), *pEvent->ToDescr(), OverrideStatus, RunningStatus, getSectionNumber() ? "following" : "present");
|
||||||
|
#endif
|
||||||
|
RunningStatus = OverrideStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pSchedule->SetRunningStatus(pEvent, RunningStatus, Channel);
|
||||||
|
}
|
||||||
if (!Process)
|
if (!Process)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
4
epg.c
4
epg.c
@ -7,7 +7,7 @@
|
|||||||
* Original version (as used in VDR before 1.3.0) written by
|
* Original version (as used in VDR before 1.3.0) written by
|
||||||
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
|
||||||
*
|
*
|
||||||
* $Id: epg.c 4.8 2017/05/28 13:08:09 kls Exp $
|
* $Id: epg.c 4.9 2019/05/20 09:55:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "epg.h"
|
#include "epg.h"
|
||||||
@ -1025,7 +1025,7 @@ void cSchedule::SetRunningStatus(cEvent *Event, int RunningStatus, const cChanne
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (RunningStatus >= SI::RunningStatusPausing && p->StartTime() < Event->StartTime())
|
else if (RunningStatus >= SI::RunningStatusPausing && p->StartTime() < Event->StartTime())
|
||||||
p->SetRunningStatus(SI::RunningStatusNotRunning);
|
p->SetRunningStatus(SI::RunningStatusNotRunning, Channel);
|
||||||
if (p->RunningStatus() >= SI::RunningStatusPausing)
|
if (p->RunningStatus() >= SI::RunningStatusPausing)
|
||||||
hasRunning = true;
|
hasRunning = true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user