diff options
Diffstat (limited to 'libsi')
-rw-r--r-- | libsi/descriptor.c | 18 | ||||
-rw-r--r-- | libsi/descriptor.h | 23 | ||||
-rw-r--r-- | libsi/si.c | 6 |
3 files changed, 37 insertions, 10 deletions
diff --git a/libsi/descriptor.c b/libsi/descriptor.c index 4f4ef34..55a6a9c 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.3 2004/01/12 16:17:20 kls Exp $ + * $Id: descriptor.c 1.5 2004/01/24 14:52:41 kls Exp $ * * ***************************************************************************/ @@ -22,6 +22,7 @@ void ShortEventDescriptor::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; name.setDataAndOffset(data+offset, s->event_name_length, offset); const descr_short_event_mid *mid; data.setPointerAndOffset<const descr_short_event_mid>(mid, offset); @@ -42,6 +43,7 @@ void ExtendedEventDescriptor::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; itemLoop.setDataAndOffset(data+offset, s->length_of_items, offset); const descr_extended_event_mid *mid; data.setPointerAndOffset<const descr_extended_event_mid>(mid, offset); @@ -183,6 +185,7 @@ void ParentalRatingDescriptor::Rating::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; } int CaDescriptor::getCaType() const { @@ -398,6 +401,7 @@ void ComponentDescriptor::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; description.setData(data+offset, getLength()-offset); } @@ -462,6 +466,7 @@ void MultilingualNameDescriptor::Name::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; name.setData(data+offset, s->text_length); } @@ -486,6 +491,7 @@ void MultilingualServiceNameDescriptor::Name::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; providerName.setDataAndOffset(data+offset, s->text_length, offset); const entry_multilingual_service_name_mid *mid; data.setPointerAndOffset<const entry_multilingual_service_name_mid>(mid, offset); @@ -514,6 +520,15 @@ LinkageType LinkageDescriptor::getLinkageType() const { return (LinkageType)s->linkage_type; } +void ISO639LanguageDescriptor::Parse() { + unsigned int offset=0; + data.setPointerAndOffset<const descr_iso_639_language>(s, offset); + languageCode[0]=s->lang_code1; + languageCode[1]=s->lang_code2; + languageCode[2]=s->lang_code3; + languageCode[3]=0; +} + void ApplicationSignallingDescriptor::Parse() { entryLoop.setData(data+sizeof(descr_application_signalling), getLength()-sizeof(descr_application_signalling)); } @@ -582,6 +597,7 @@ void MHP_ApplicationNameDescriptor::NameEntry::Parse() { languageCode[0]=s->lang_code1; languageCode[1]=s->lang_code2; languageCode[2]=s->lang_code3; + languageCode[3]=0; } int MHP_TransportProtocolDescriptor::getProtocolId() const { diff --git a/libsi/descriptor.h b/libsi/descriptor.h index 3eb90fa..5541cc4 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.3 2004/01/12 16:17:47 kls Exp $ + * $Id: descriptor.h 1.5 2004/01/24 14:52:05 kls Exp $ * * ***************************************************************************/ @@ -20,7 +20,7 @@ namespace SI { class ShortEventDescriptor : public Descriptor { public: - char languageCode[3]; + char languageCode[4]; String name; //name of the event String text; //short description protected: @@ -37,7 +37,7 @@ public: protected: virtual void Parse(); }; - char languageCode[3]; + char languageCode[4]; int getDescriptorNumber(); int getLastDescriptorNumber(); StructureLoop<Item> itemLoop; @@ -93,7 +93,7 @@ class ParentalRatingDescriptor : public Descriptor { public: class Rating : public LoopElement { public: - char languageCode[3]; + char languageCode[4]; int getRating() const; virtual int getLength() { return sizeof(parental_rating); } protected: @@ -258,7 +258,7 @@ public: int getStreamContent() const; int getComponentType() const; int getComponentTag() const; - char languageCode[3]; + char languageCode[4]; String description; protected: virtual void Parse(); @@ -317,7 +317,7 @@ class MultilingualNameDescriptor : public Descriptor { public: class Name : public LoopElement { public: - char languageCode[3]; + char languageCode[4]; String name; virtual int getLength() { return sizeof(entry_multilingual_name)+name.getLength(); } protected: @@ -374,6 +374,15 @@ private: const descr_linkage *s; }; +class ISO639LanguageDescriptor : public Descriptor { +public: + char languageCode[4]; +protected: + virtual void Parse(); +private: + const descr_iso_639_language *s; +}; + //a descriptor currently unimplemented in this library class UnimplementedDescriptor : public Descriptor { protected: @@ -427,7 +436,7 @@ public: class NameEntry : public LoopElement { public: virtual int getLength() { return sizeof(descr_application_name_entry)+name.getLength(); } - char languageCode[3]; + char languageCode[4]; String name; protected: virtual void Parse(); @@ -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.5 2004/01/12 22:19:34 kls Exp $ + * $Id: si.c 1.6 2004/01/23 14:27:45 kls Exp $ * * ***************************************************************************/ @@ -323,6 +323,9 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain) case LinkageDescriptorTag: d=new LinkageDescriptor(); break; + case ISO639LanguageDescriptorTag: + d=new ISO639LanguageDescriptor(); + break; //note that it is no problem to implement one //of the unimplemented descriptors. @@ -335,7 +338,6 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain) case DataStreamAlignmentDescriptorTag: case TargetBackgroundGridDescriptorTag: case VideoWindowDescriptorTag: - case ISO639LanguageDescriptorTag: case SystemClockDescriptorTag: case MultiplexBufferUtilizationDescriptorTag: case CopyrightDescriptorTag: |