From b8e837dbbbaa8a91c4dc257fde5c0131bedeb23e Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 18 Jan 2004 18:00:00 +0100 Subject: Version 1.3.2 - Fixed resetting the EPG data versions after changing the preferred languages (thanks to Teemu Rantanen for reporting this one and helping to debug it). - Added LinkageDescriptor handling to 'libsi' (thanks to Marcel Wiesweg). - Added Russian language texts (thanks to Vyacheslav Dikonov). Plugin authors may want to add the new entries to their I18N texts and contact the translators to have their texts translated. Note that there are now 17 different OSD languages, so please make sure you have 17 versions for each of your texts. - Some corrections and additions to the Finnish OSD texts (thanks to Rolf Ahrenberg and Niko Tarnanen). - Fixed a wrong 'delta' value in the call to the shutdown script (thanks to Stephan Epstein for reporting this one). - Activated detection of radio channels (to avoid reports about "channels not being detected that used to be detected with the 'scan' utility or the original 'autopid' patch ;-). - Channels with a zero VPID no longer write a PPID into channels.conf. - Short channel names are now only stored if they actually differ from the full name. - The EPG scan now scans newly found transponders together with already existing ones. - The "Red" button in the "Setup/EPG" menu can now be used to force an EPG scan on a single DVB card system (see MANUAL for details). - The new SVDRP command 'SCAN' can be used to force an EPG scan on a single DVB card system (see MANUAL under Setup/EPG for details). - Fixed handling PID changes in 'Transfer Mode'. - Excess blanks in channel names read from the SDT are now removed. - Fixed wrong parameter settings when scanning NITs for terrestrial transponders (thanks to Christian Tramnitz for pointing out this one). - Fixed some out of bounds parameter settings when scanning NITs for cable and satellite transponders. - Added 'libsi' include files to the 'include' directory, so that plugins can use them (thanks to Marcel Wiesweg). - Now only processing NITs that contain the transponder they are actually broadcast on. - Fixed setting the source type for newly detected terrestrial transponders (thanks to Christian Tramnitz for his support in debugging this). --- libsi/descriptor.c | 24 +++++++++++++++++++++++- libsi/descriptor.h | 15 ++++++++++++++- libsi/si.c | 6 ++++-- libsi/si.h | 18 ++++++++++++++---- 4 files changed, 55 insertions(+), 8 deletions(-) (limited to 'libsi') diff --git a/libsi/descriptor.c b/libsi/descriptor.c index 433d680..4f4ef34 100644 --- a/libsi/descriptor.c +++ b/libsi/descriptor.c @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: descriptor.c 1.2 2003/12/13 10:42:05 kls Exp $ + * $Id: descriptor.c 1.3 2004/01/12 16:17:20 kls Exp $ * * ***************************************************************************/ @@ -492,6 +492,28 @@ void MultilingualServiceNameDescriptor::Name::Parse() { name.setData(data+offset, mid->service_name_length); } +void LinkageDescriptor::Parse() { + unsigned int offset=0; + data.setPointerAndOffset(s, offset); + privateData.assign(data.getData(offset), getLength()-offset); +} + +int LinkageDescriptor::getTransportStreamId() const { + return HILO(s->transport_stream_id); +} + +int LinkageDescriptor::getOriginalNetworkId() const { + return HILO(s->original_network_id); +} + +int LinkageDescriptor::getServiceId() const { + return HILO(s->service_id); +} + +LinkageType LinkageDescriptor::getLinkageType() const { + return (LinkageType)s->linkage_type; +} + void ApplicationSignallingDescriptor::Parse() { entryLoop.setData(data+sizeof(descr_application_signalling), getLength()-sizeof(descr_application_signalling)); } diff --git a/libsi/descriptor.h b/libsi/descriptor.h index 9abe1f0..3eb90fa 100644 --- a/libsi/descriptor.h +++ b/libsi/descriptor.h @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: descriptor.h 1.2 2003/12/13 10:42:08 kls Exp $ + * $Id: descriptor.h 1.3 2004/01/12 16:17:47 kls Exp $ * * ***************************************************************************/ @@ -361,6 +361,19 @@ protected: virtual void Parse(); }; +class LinkageDescriptor : public Descriptor { +public: + int getTransportStreamId() const; + int getOriginalNetworkId() const; + int getServiceId() const; + LinkageType getLinkageType() const; + CharArray privateData; +protected: + virtual void Parse(); +private: + const descr_linkage *s; +}; + //a descriptor currently unimplemented in this library class UnimplementedDescriptor : public Descriptor { protected: diff --git a/libsi/si.c b/libsi/si.c index ac2e26f..4342097 100644 --- a/libsi/si.c +++ b/libsi/si.c @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: si.c 1.4 2004/01/05 11:04:17 kls Exp $ + * $Id: si.c 1.5 2004/01/12 22:19:34 kls Exp $ * * ***************************************************************************/ @@ -320,6 +320,9 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain) case ApplicationSignallingDescriptorTag: d=new ApplicationSignallingDescriptor(); break; + case LinkageDescriptorTag: + d=new LinkageDescriptor(); + break; //note that it is no problem to implement one //of the unimplemented descriptors. @@ -348,7 +351,6 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain) case VBITeletextDescriptorTag: case CountryAvailabilityDescriptorTag: case MocaicDescriptorTag: - case LinkageDescriptorTag: case TeletextDescriptorTag: case TelephoneDescriptorTag: case LocalTimeOffsetDescriptorTag: diff --git a/libsi/si.h b/libsi/si.h index d2ac417..4666c2d 100644 --- a/libsi/si.h +++ b/libsi/si.h @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: si.h 1.5 2004/01/09 15:59:53 kls Exp $ + * $Id: si.h 1.6 2004/01/12 16:19:11 kls Exp $ * * ***************************************************************************/ @@ -154,6 +154,18 @@ enum RunningStatus { RunningStatusUndefined = 0, RunningStatusRunning = 4 }; +enum LinkageType { LinkageTypeInformationService = 0x01, + LinkageTypeEPGService = 0x02, + LinkageTypeCaReplacementService = 0x03, + LinkageTypeTSContainingCompleteNetworkBouquetSi = 0x04, + LinkageTypeServiceReplacementService = 0x05, + LinkageTypeDataBroadcastService = 0x06, + LinkageTypeRCSMap = 0x07, + LinkageTypeMobileHandover = 0x08, + LinkageTypeSystemSoftwareUpdateService = 0x09, + LinkageTypeTSContainingSsuBatOrNit = 0x0A + }; + /* Some principles: - Objects that return references to other objects contained in their data must make sure that the returned objects have been parsed. @@ -167,6 +179,7 @@ public: Object(CharArray &d); //can only be called once since data is immutable void setData(const unsigned char*data, unsigned int size, bool doCopy=true); + CharArray getData() { return data; } virtual int getLength() = 0; protected: CharArray data; @@ -224,9 +237,6 @@ private: class LoopElement : public Object { }; -class SubStructure : public LoopElement { -}; - class Descriptor : public LoopElement { public: virtual int getLength(); -- cgit v1.2.3