summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS3
-rw-r--r--HISTORY9
-rw-r--r--eit.c4
-rw-r--r--sdt.c24
4 files changed, 32 insertions, 8 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 560c7b15..dfbe07b9 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1057,3 +1057,6 @@ Maynard Cedric <maynard.cedric@wanadoo.fr>
Jörg Knitter <joerg.knitter@gmx.de>
for reporting a problem in case the video partition is mounted with "iocharset=utf8"
+
+Mike parker <vdr@msatt.freeserve.co.uk>
+ for helping to test support for NVOD channels
diff --git a/HISTORY b/HISTORY
index 33d5e6e3..0efa9432 100644
--- a/HISTORY
+++ b/HISTORY
@@ -2936,14 +2936,14 @@ Video Disk Recorder Revision History
- Fixed cRingBufferLinear::Get() in case the buffer wraps around (thanks to Ludwig
Nussel for reporting this one).
-2004-07-17: Version 1.3.12
+2004-07-18: Version 1.3.12
- Removed all error messages from cRecordings::ScanVideoDir() and just skipping
entries that cause errors in order to avoid failure in case of things like
broken links etc.
- The function cTimers::SetEvents() now immediately returns if there is some user
input.
-- Fixed handling menu status messages when the list contents is scrolled (thanks
+- Fixed handling menu status messages when the list contents is scrolled (thanks to
Alfred Zastrow for reporting this one).
- Fixed checking the last area for misalignment in cOsd::CanHandleAreas() (thanks
to Reinhard Nissl for reporting this one).
@@ -2956,3 +2956,8 @@ Video Disk Recorder Revision History
error (suggested by Reinhard Nissl).
- Avoiding flashing effects in the OSD of full featured DVB cards by explicitly
clearing the OSD windows before opening them (suggested by Marco Schlüßler).
+- Experimental support for NVOD channels. Currently these channels are detected
+ and linked to their "base" channels using the same mechanisms as for the
+ "linked services" (let's see if this is useful). Thanks to Mike parker for
+ helping to test this. Also used some input from the 'autopid' patch by Andreas
+ Schultz).
diff --git a/eit.c b/eit.c
index 3ac53fac..dac29539 100644
--- a/eit.c
+++ b/eit.c
@@ -8,7 +8,7 @@
* 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>.
*
- * $Id: eit.c 1.95 2004/06/06 14:49:45 kls Exp $
+ * $Id: eit.c 1.96 2004/07/18 10:52:58 kls Exp $
*/
#include "eit.h"
@@ -144,7 +144,7 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data)
break;
case SI::TimeShiftedEventDescriptorTag: {
SI::TimeShiftedEventDescriptor *tsed = (SI::TimeShiftedEventDescriptor *)d;
- cSchedule *rSchedule = (cSchedule *)Schedules->GetSchedule(tChannelID(Source, 0, 0, tsed->getReferenceServiceId()));
+ cSchedule *rSchedule = (cSchedule *)Schedules->GetSchedule(tChannelID(Source, channel->Nid(), channel->Tid(), tsed->getReferenceServiceId()));
if (!rSchedule)
break;
rEvent = (cEvent *)rSchedule->GetEvent(tsed->getReferenceEventId());
diff --git a/sdt.c b/sdt.c
index 247d2c9b..a4a62b4d 100644
--- a/sdt.c
+++ b/sdt.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: sdt.c 1.9 2004/06/06 14:25:22 kls Exp $
+ * $Id: sdt.c 1.10 2004/07/18 10:58:01 kls Exp $
*/
#include "sdt.h"
@@ -46,6 +46,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
if (!channel)
channel = Channels.GetByChannelID(tChannelID(Source(), 0, Transponder(), SiSdtService.getServiceId()));
+ cLinkChannels *LinkChannels = NULL;
SI::Descriptor *d;
for (SI::Loop::Iterator it2; (d = SiSdtService.serviceDescriptors.getNext(it2)); ) {
switch (d->getDescriptorTag()) {
@@ -54,8 +55,8 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
switch (sd->getServiceType()) {
case 0x01: // digital television service
case 0x02: // digital radio sound service
- //XXX TODO case 0x04: // NVOD reference service
- //XXX TODO case 0x05: // NVOD time-shifted service
+ case 0x04: // NVOD reference service
+ case 0x05: // NVOD time-shifted service
{
char NameBuf[1024];
char ShortNameBuf[1024];
@@ -102,7 +103,16 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
SI::NVODReferenceDescriptor *nrd = (SI::NVODReferenceDescriptor *)d;
for (SI::Loop::Iterator it; nrd->serviceLoop.hasNext(it); ) {
SI::NVODReferenceDescriptor::Service Service = nrd->serviceLoop.getNext(it);
- //printf(" %04X-%04X-%04X\n", Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId());//XXX TODO
+ cChannel *link = Channels.GetByChannelID(tChannelID(Source(), Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId()));
+ if (!link && Setup.UpdateChannels >= 3) {
+ link = Channels.NewChannel(Channel(), "NVOD", Service.getOriginalNetworkId(), Service.getTransportStream(), Service.getServiceId());
+ patFilter->Trigger();
+ }
+ if (link) {
+ if (!LinkChannels)
+ LinkChannels = new cLinkChannels;
+ LinkChannels->Add(new cLinkChannel(link));
+ }
}
}
break;
@@ -110,6 +120,12 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
}
delete d;
}
+ if (LinkChannels) {
+ if (channel)
+ channel->SetLinkChannels(LinkChannels);
+ else
+ delete LinkChannels;
+ }
}
Channels.Unlock();
}