From cfb37a7edf8caafb0f07594b080837231ba9c575 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 1 Nov 2010 15:47:59 +0100 Subject: Added support for "registration descriptor" --- libsi/descriptor.c | 13 ++++++++++++- libsi/descriptor.h | 12 +++++++++++- libsi/headers.h | 14 +++++++++++++- libsi/si.c | 6 ++++-- libsi/util.h | 3 ++- 5 files changed, 42 insertions(+), 6 deletions(-) (limited to 'libsi') diff --git a/libsi/descriptor.c b/libsi/descriptor.c index f3bb3442..59f636a3 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.22 2007/02/03 11:45:58 kls Exp $ + * $Id: descriptor.c 2.1 2010/11/01 15:24:31 kls Exp $ * * ***************************************************************************/ @@ -1032,4 +1032,15 @@ void MHP_ApplicationIconsDescriptor::Parse() { data.setPointerAndOffset(s, offset); } +int RegistrationDescriptor::getFormatIdentifier() const { + return HILOHILO(s->format_identifier); +} + +void RegistrationDescriptor::Parse() { + int offset=0; + data.setPointerAndOffset(s, offset); + if (checkSize(getLength()-offset)) + privateData.assign(data.getData(offset), getLength()-offset); +} + } //end of namespace diff --git a/libsi/descriptor.h b/libsi/descriptor.h index 161793e5..4f2e41b6 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.16 2007/02/03 11:45:58 kls Exp $ + * $Id: descriptor.h 2.1 2010/11/01 15:24:32 kls Exp $ * * ***************************************************************************/ @@ -660,6 +660,16 @@ private: const descr_application_icons_descriptor_end *s; }; +class RegistrationDescriptor : public Descriptor { +public: + int getFormatIdentifier() const; + CharArray privateData; +protected: + virtual void Parse(); +private: + const descr_registration *s; +}; + } //end of namespace #endif //LIBSI_TABLE_H diff --git a/libsi/headers.h b/libsi/headers.h index db1e261e..3ec35def 100644 --- a/libsi/headers.h +++ b/libsi/headers.h @@ -10,7 +10,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: headers.h 1.9 2007/02/03 11:45:58 kls Exp $ + * $Id: headers.h 2.1 2010/11/01 15:24:32 kls Exp $ * * ***************************************************************************/ @@ -2006,6 +2006,18 @@ struct item_premiere_content_transmission_time { u_char start_time_s :8; }; +/* 0x05 registration_descriptor */ + +#define DESCR_REGISTRATION_LEN 6 +struct descr_registration { + u_char descriptor_tag :8; + u_char descriptor_length :8; + u_char format_identifier_hi_hi :8; + u_char format_identifier_hi_lo :8; + u_char format_identifier_lo_hi :8; + u_char format_identifier_lo_lo :8; +}; + } //end of namespace #endif //LIBSI_HEADERS_H diff --git a/libsi/si.c b/libsi/si.c index 0fd832d8..39911786 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 2.2 2010/02/13 10:31:52 kls Exp $ + * $Id: si.c 2.3 2010/11/01 15:24:32 kls Exp $ * * ***************************************************************************/ @@ -606,6 +606,9 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain, case ExtensionDescriptorTag: d=new ExtensionDescriptor(); break; + case RegistrationDescriptorTag: + d=new RegistrationDescriptor(); + break; //note that it is no problem to implement one //of the unimplemented descriptors. @@ -614,7 +617,6 @@ Descriptor *Descriptor::getDescriptor(CharArray da, DescriptorTagDomain domain, case VideoStreamDescriptorTag: case AudioStreamDescriptorTag: case HierarchyDescriptorTag: - case RegistrationDescriptorTag: case DataStreamAlignmentDescriptorTag: case TargetBackgroundGridDescriptorTag: case VideoWindowDescriptorTag: diff --git a/libsi/util.h b/libsi/util.h index 48626723..e9134cd4 100644 --- a/libsi/util.h +++ b/libsi/util.h @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: util.h 2.1 2008/05/22 10:49:08 kls Exp $ + * $Id: util.h 2.2 2010/11/01 15:24:32 kls Exp $ * * ***************************************************************************/ @@ -19,6 +19,7 @@ #include #define HILO(x) (x##_hi << 8 | x##_lo) +#define HILOHILO(x) (x##_hi_hi << 24 | x##_hi_lo << 16 | x##_lo_hi << 8 | x##_lo_lo) #define BCD_TIME_TO_SECONDS(x) ((3600 * ((10*((x##_h & 0xF0)>>4)) + (x##_h & 0xF))) + \ (60 * ((10*((x##_m & 0xF0)>>4)) + (x##_m & 0xF))) + \ ((10*((x##_s & 0xF0)>>4)) + (x##_s & 0xF))) -- cgit v1.2.3