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>
|
Jörg Knitter <joerg.knitter@gmx.de>
|
||||||
for reporting a problem in case the video partition is mounted with "iocharset=utf8"
|
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
|
- Fixed cRingBufferLinear::Get() in case the buffer wraps around (thanks to Ludwig
|
||||||
Nussel for reporting this one).
|
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
|
- Removed all error messages from cRecordings::ScanVideoDir() and just skipping
|
||||||
entries that cause errors in order to avoid failure in case of things like
|
entries that cause errors in order to avoid failure in case of things like
|
||||||
broken links etc.
|
broken links etc.
|
||||||
- The function cTimers::SetEvents() now immediately returns if there is some user
|
- The function cTimers::SetEvents() now immediately returns if there is some user
|
||||||
input.
|
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).
|
Alfred Zastrow for reporting this one).
|
||||||
- Fixed checking the last area for misalignment in cOsd::CanHandleAreas() (thanks
|
- Fixed checking the last area for misalignment in cOsd::CanHandleAreas() (thanks
|
||||||
to Reinhard Nissl for reporting this one).
|
to Reinhard Nissl for reporting this one).
|
||||||
@ -2956,3 +2956,8 @@ Video Disk Recorder Revision History
|
|||||||
error (suggested by Reinhard Nissl).
|
error (suggested by Reinhard Nissl).
|
||||||
- Avoiding flashing effects in the OSD of full featured DVB cards by explicitly
|
- 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).
|
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>.
|
* 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.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"
|
#include "eit.h"
|
||||||
@ -144,7 +144,7 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data)
|
|||||||
break;
|
break;
|
||||||
case SI::TimeShiftedEventDescriptorTag: {
|
case SI::TimeShiftedEventDescriptorTag: {
|
||||||
SI::TimeShiftedEventDescriptor *tsed = (SI::TimeShiftedEventDescriptor *)d;
|
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)
|
if (!rSchedule)
|
||||||
break;
|
break;
|
||||||
rEvent = (cEvent *)rSchedule->GetEvent(tsed->getReferenceEventId());
|
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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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"
|
#include "sdt.h"
|
||||||
@ -46,6 +46,7 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
if (!channel)
|
if (!channel)
|
||||||
channel = Channels.GetByChannelID(tChannelID(Source(), 0, Transponder(), SiSdtService.getServiceId()));
|
channel = Channels.GetByChannelID(tChannelID(Source(), 0, Transponder(), SiSdtService.getServiceId()));
|
||||||
|
|
||||||
|
cLinkChannels *LinkChannels = NULL;
|
||||||
SI::Descriptor *d;
|
SI::Descriptor *d;
|
||||||
for (SI::Loop::Iterator it2; (d = SiSdtService.serviceDescriptors.getNext(it2)); ) {
|
for (SI::Loop::Iterator it2; (d = SiSdtService.serviceDescriptors.getNext(it2)); ) {
|
||||||
switch (d->getDescriptorTag()) {
|
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()) {
|
switch (sd->getServiceType()) {
|
||||||
case 0x01: // digital television service
|
case 0x01: // digital television service
|
||||||
case 0x02: // digital radio sound service
|
case 0x02: // digital radio sound service
|
||||||
//XXX TODO case 0x04: // NVOD reference service
|
case 0x04: // NVOD reference service
|
||||||
//XXX TODO case 0x05: // NVOD time-shifted service
|
case 0x05: // NVOD time-shifted service
|
||||||
{
|
{
|
||||||
char NameBuf[1024];
|
char NameBuf[1024];
|
||||||
char ShortNameBuf[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;
|
SI::NVODReferenceDescriptor *nrd = (SI::NVODReferenceDescriptor *)d;
|
||||||
for (SI::Loop::Iterator it; nrd->serviceLoop.hasNext(it); ) {
|
for (SI::Loop::Iterator it; nrd->serviceLoop.hasNext(it); ) {
|
||||||
SI::NVODReferenceDescriptor::Service Service = nrd->serviceLoop.getNext(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;
|
break;
|
||||||
@ -110,6 +120,12 @@ void cSdtFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
|
|||||||
}
|
}
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
if (LinkChannels) {
|
||||||
|
if (channel)
|
||||||
|
channel->SetLinkChannels(LinkChannels);
|
||||||
|
else
|
||||||
|
delete LinkChannels;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Channels.Unlock();
|
Channels.Unlock();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user