From 6e1fd835558b4e70ad94a280a209f050ec0f7a75 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 4 Nov 2001 18:00:00 +0100 Subject: =?UTF-8?q?Version=200.98=20-=20Completed=20storing=20the=20curren?= =?UTF-8?q?t=20audio=20volume=20in=20the=20setup.conf=20file=20(thanks=20?= =?UTF-8?q?=20=20to=20Andy=20Grobb).=20-=20Fixed=20closing=20the=20progres?= =?UTF-8?q?s=20display=20with=20the=20"Back"=20key=20when=20in=20trick=20m?= =?UTF-8?q?ode=20=20=20and=20Setup.ShowReplayMode=20is=20enabled=20(thanks?= =?UTF-8?q?=20to=20Stefan=20Huelswitt).=20-=20New=20SVDRP=20commands=20LST?= =?UTF-8?q?R=20and=20DELR=20to=20list=20and=20delete=20recordings=20(thank?= =?UTF-8?q?s=20to=20=20=20Thomas=20Heiligenmann).=20-=20Fixed=20a=20crash?= =?UTF-8?q?=20when=20pressing=20the=20'2'=20button=20while=20replaying=20a?= =?UTF-8?q?=20DVD.=20-=20Updated=20'channels.conf'=20for=20the=20"Bundesli?= =?UTF-8?q?ga"=20channels=20of=20Premiere=20World=20=20=20(thanks=20to=20M?= =?UTF-8?q?el=20Sch=E4chner).=20-=20Changed=20the=20tuning=20code=20to=20u?= =?UTF-8?q?se=20FrontendInfo=20to=20detect=20the=20type=20of=20DVB=20card.?= =?UTF-8?q?=20-=20Removed=20the=20recursion=20stuff=20from=20cThread=20(cM?= =?UTF-8?q?utex=20already=20does=20this).=20-=20Fixed=20handling=20the=20r?= =?UTF-8?q?epeat=20function=20in=20the=20channel=20display.=20-=20Avoiding?= =?UTF-8?q?=20multiple=20EPG=20entries=20for=20the=20same=20event=20(thank?= =?UTF-8?q?s=20to=20Rolf=20Hakenes=20=20=20for=20some=20valuable=20informa?= =?UTF-8?q?tion=20on=20how=20to=20do=20this).=20-=20A=20recording=20on=20t?= =?UTF-8?q?he=20primary=20interface=20can=20now=20be=20stopped=20to=20make?= =?UTF-8?q?=20it=20continue=20=20=20on=20an=20other=20free=20DVB=20card=20?= =?UTF-8?q?(if=20one=20is=20free=20at=20the=20moment).=20See=20MANUAL=20fo?= =?UTF-8?q?r=20=20=20details.=20-=20Added=20some=20missing=20teletext=20PI?= =?UTF-8?q?Ds=20(thanks=20to=20Norbert=20Schmidt).=20-=20Added=20PTS=20to?= =?UTF-8?q?=20the=20converted=20PCM=20audio=20when=20replaying=20a=20DVD?= =?UTF-8?q?=20(thanks=20to=20Andreas=20=20=20Schultz).=20Now=20the=20audio?= =?UTF-8?q?=20and=20video=20of=20a=20DVD=20replayed=20over=20the=20DVB=20c?= =?UTF-8?q?ard's=20A/V=20=20=20out=20should=20always=20be=20in=20sync.=20-?= =?UTF-8?q?=20Fixed=20handling=20the=20"Power"=20key=20in=20case=20Setup.M?= =?UTF-8?q?inUserInactivity=20is=20set=20to=200=20to=20=20=20disable=20aut?= =?UTF-8?q?omatic=20shutdown.=20-=20Added=20a=20fifth=20parameter=20to=20t?= =?UTF-8?q?he=20'shutdown'=20call=20that=20indicates=20the=20reason=20for?= =?UTF-8?q?=20=20=20this=20shutdown=20request=20(see=20INSTALL).=20-=20Fix?= =?UTF-8?q?ed=20releasing=20'index'=20memory=20after=20recording=20or=20pl?= =?UTF-8?q?ayback.=20-=20Fixed=20ejecting=20a=20DVD=20while=20it=20is=20be?= =?UTF-8?q?ing=20replayed.=20-=20Removed=20all=20video=20overlay=20stuff?= =?UTF-8?q?=20from=20cDvbApi=20and=20SVDRP.=20Guido=20Fiala's=20new=20=20?= =?UTF-8?q?=20'kvdr'=20version=200.4=20now=20does=20these=20things=20itsel?= =?UTF-8?q?f.=20As=20a=20consequence=20of=20this=20you=20=20=20will=20now?= =?UTF-8?q?=20need=20to=20use=20kvdr=200.4=20or=20later.=20-=20The=20devic?= =?UTF-8?q?e=20/dev/video=20is=20now=20opened=20only=20if=20necessary=20(t?= =?UTF-8?q?o=20GRAB=20an=20image),=20=20=20allowing=20other=20programs=20(?= =?UTF-8?q?like=20'kvdr',=20for=20instance)=20to=20use=20that=20device.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eit.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) (limited to 'eit.c') diff --git a/eit.c b/eit.c index 71ab54c..00792ab 100644 --- a/eit.c +++ b/eit.c @@ -16,7 +16,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: eit.c 1.28 2001/10/19 13:13:25 kls Exp $ + * $Id: eit.c 1.29 2001/10/28 13:51:22 kls Exp $ ***************************************************************************/ #include "eit.h" @@ -189,6 +189,7 @@ cEventInfo::cEventInfo(unsigned short serviceid, unsigned short eventid) bIsPresent = bIsFollowing = false; lDuration = 0; tTime = 0; + uTableID = 0; uEventID = eventid; uServiceID = serviceid; nChannelNumber = 0; @@ -231,6 +232,12 @@ bool cEventInfo::IsFollowing() const { return bIsFollowing; } + +void cEventInfo::SetTableID(unsigned char tableid) +{ + uTableID = tableid; +} + /** */ void cEventInfo::SetFollowing(bool foll) { @@ -246,6 +253,12 @@ const char * cEventInfo::GetDate() const return szDate; } + +const unsigned char cEventInfo::GetTableID(void) const +{ + return uTableID; +} + /** */ const char * cEventInfo::GetTimeString() const { @@ -545,21 +558,26 @@ unsigned short cSchedule::GetServiceID() const return uServiceID; } /** */ -const cEventInfo * cSchedule::GetEvent(unsigned short uEventID) const +const cEventInfo * cSchedule::GetEvent(unsigned short uEventID, time_t tTime) const { + // Returns either the event info with the given uEventID or, if that one can't + // be found, the one with the given tTime (or NULL if neither can be found) cEventInfo *pe = Events.First(); + cEventInfo *pt = NULL; while (pe != NULL) { if (pe->GetEventID() == uEventID) return pe; + if (tTime > 0 && pe->GetTime() == tTime) // 'tTime < 0' is apparently used with NVOD channels + pt = pe; pe = Events.Next(pe); } - return NULL; + return pt; } /** */ -const cEventInfo * cSchedule::GetEvent(time_t tTime) const +const cEventInfo * cSchedule::GetEventAround(time_t tTime) const { cEventInfo *pe = Events.First(); while (pe != NULL) @@ -759,7 +777,7 @@ int cEIT::ProcessEIT(unsigned char *buffer) if (!rEvent) break; } - pEvent = (cEventInfo *)pSchedule->GetEvent((unsigned short)VdrProgramInfo->EventID); + pEvent = (cEventInfo *)pSchedule->GetEvent((unsigned short)VdrProgramInfo->EventID, VdrProgramInfo->StartTime); if (!pEvent) { // If we don't have that event ID yet, we create a new one. // Otherwise we copy the information into the existing event anyway, because the data might have changed. @@ -767,6 +785,14 @@ int cEIT::ProcessEIT(unsigned char *buffer) pEvent = (cEventInfo *)pSchedule->GetEvent((unsigned short)VdrProgramInfo->EventID); if (!pEvent) break; + pEvent->SetTableID(tid); + } + else { + // We have found an existing event, either through its event ID or its start time. + // If the new event comes from a table that belongs to an "other TS" and the existing + // one comes from a "actual TS" table, lets skip it. + if ((tid == 0x4F || tid == 0x60) && (pEvent->GetTableID() == 0x4E || pEvent->GetTableID() == 0x50)) + continue; } if (rEvent) { pEvent->SetTitle(rEvent->GetTitle()); @@ -774,6 +800,7 @@ int cEIT::ProcessEIT(unsigned char *buffer) pEvent->SetExtendedDescription(rEvent->GetExtendedDescription()); } else { + pEvent->SetTableID(tid); pEvent->SetTitle(VdrProgramInfo->ShortName); pEvent->SetSubtitle(VdrProgramInfo->ShortText); pEvent->SetExtendedDescription(VdrProgramInfo->ExtendedName); -- cgit v1.2.3