mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Experimental support for NVOD channels
This commit is contained in:
parent
39ad1fe179
commit
bf9e7df743
@ -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
|
||||
|
9
HISTORY
9
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).
|
||||
|
4
eit.c
4
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());
|
||||
|
24
sdt.c
24
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();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user