diff options
| author | Klaus Schmidinger <vdr@tvdr.de> | 2006-05-28 14:42:21 +0200 | 
|---|---|---|
| committer | Klaus Schmidinger <vdr@tvdr.de> | 2006-05-28 14:42:21 +0200 | 
| commit | 43551831500e249b2dcb8557910ad234f46564cc (patch) | |
| tree | c5f3fde1a30e7da010273e0831924788a6124422 | |
| parent | e892171736157127d1ca8fd6b5c6193eb5b55c53 (diff) | |
| download | vdr-43551831500e249b2dcb8557910ad234f46564cc.tar.gz vdr-43551831500e249b2dcb8557910ad234f46564cc.tar.bz2 | |
Fixed the PremiereContentTransmissionDescriptor in 'libsi'
| -rw-r--r-- | CONTRIBUTORS | 1 | ||||
| -rw-r--r-- | HISTORY | 5 | ||||
| -rw-r--r-- | config.h | 4 | ||||
| -rw-r--r-- | libsi/descriptor.c | 29 | ||||
| -rw-r--r-- | libsi/descriptor.h | 24 | ||||
| -rw-r--r-- | libsi/headers.h | 13 | 
6 files changed, 55 insertions, 21 deletions
| diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c593cc46..97cd195b 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -218,6 +218,7 @@ Stefan Huelswitt <huels@iname.com>   for suggesting that the SVDRP command GRAB should allow file names without extension   again   for reporting a problem with channel up/down switching on single card systems + for fixing the PremiereContentTransmissionDescriptor in 'libsi'  Ulrich Röder <roeder@efr-net.de>   for pointing out that there are channels that have a symbol rate higher than 27500 @@ -4745,3 +4745,8 @@ Video Disk Recorder Revision History    (reported by Mirko Dölle).  - Fixed deleting channels in case the current channel's number changes (reported    by Mirko Dölle). + +2006-05-28: Version 1.4.0-3 + +- Fixed the PremiereContentTransmissionDescriptor in 'libsi' (thanks to Stefan +  Huelswitt). @@ -4,7 +4,7 @@   * See the main source file 'vdr.c' for copyright information and   * how to reach the author.   * - * $Id: config.h 1.257 2006/05/19 12:12:39 kls Exp $ + * $Id: config.h 1.258 2006/05/28 14:42:21 kls Exp $   */  #ifndef __CONFIG_H @@ -21,7 +21,7 @@  // VDR's own version number: -#define VDRVERSION  "1.4.0-2" +#define VDRVERSION  "1.4.0-3"  #define VDRVERSNUM   10400  // Version * 10000 + Major * 100 + Minor  // The plugin API's version number: diff --git a/libsi/descriptor.c b/libsi/descriptor.c index 57a92488..1654a33b 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.20 2006/04/17 12:19:15 kls Exp $ + *   $Id: descriptor.c 1.21 2006/05/28 14:25:30 kls Exp $   *                                                                         *   ***************************************************************************/ @@ -806,21 +806,34 @@ int PremiereContentTransmissionDescriptor::getServiceId() const {     return HILO(s->service_id);  } -int PremiereContentTransmissionDescriptor::getMJD() const { +void PremiereContentTransmissionDescriptor::Parse() { +   s=data.getData<const descr_premiere_content_transmission>(); +   startDayLoop.setData(data+sizeof(descr_premiere_content_transmission), getLength()-sizeof(descr_premiere_content_transmission)); +} + +int PremiereContentTransmissionDescriptor::StartDayEntry::getMJD() const {     return HILO(s->mjd);  } -void PremiereContentTransmissionDescriptor::Parse() { -   s=data.getData<const descr_premiere_content_transmission>(); -   startTimeLoop.setData(data+sizeof(descr_premiere_content_transmission), getLength()-sizeof(descr_premiere_content_transmission)); +int PremiereContentTransmissionDescriptor::StartDayEntry::getLoopLength() const { +   return s->start_time_loop; +} + +int PremiereContentTransmissionDescriptor::StartDayEntry::getLength() { +   return sizeof(item_premiere_content_transmission_day)+getLoopLength(); +} + +void PremiereContentTransmissionDescriptor::StartDayEntry::Parse() { +   s=data.getData<const item_premiere_content_transmission_day>(); +   startTimeLoop.setData(data+sizeof(item_premiere_content_transmission_day), getLoopLength());  } -time_t PremiereContentTransmissionDescriptor::StartTimeEntry::getStartTime(int mjd) const { +time_t PremiereContentTransmissionDescriptor::StartDayEntry::StartTimeEntry::getStartTime(int mjd) const {     return DVBTime::getTime(mjd >> 8, mjd & 0xff, s->start_time_h, s->start_time_m, s->start_time_s);  } -void PremiereContentTransmissionDescriptor::StartTimeEntry::Parse() { -   s=data.getData<const item_premiere_content_transmission_reference>(); +void PremiereContentTransmissionDescriptor::StartDayEntry::StartTimeEntry::Parse() { +   s=data.getData<const item_premiere_content_transmission_time>();  }  void ApplicationSignallingDescriptor::Parse() { diff --git a/libsi/descriptor.h b/libsi/descriptor.h index 338a1fd5..c0c884fd 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.14 2006/04/14 10:53:44 kls Exp $ + *   $Id: descriptor.h 1.15 2006/05/28 14:25:30 kls Exp $   *                                                                         *   ***************************************************************************/ @@ -490,20 +490,30 @@ private:  class PremiereContentTransmissionDescriptor : public Descriptor {  public: -   class StartTimeEntry : public LoopElement { +   class StartDayEntry : public LoopElement {     public: -      virtual int getLength() { return sizeof(item_premiere_content_transmission_reference); } -      time_t getStartTime(int mjd) const; //UTC +      class StartTimeEntry : public LoopElement { +      public: +         virtual int getLength() { return sizeof(item_premiere_content_transmission_time); } +         time_t getStartTime(int mjd) const; //UTC +      protected: +         virtual void Parse(); +      private: +         const item_premiere_content_transmission_time *s; +      }; +      StructureLoop<StartTimeEntry> startTimeLoop; +      virtual int getLength(); +      int getMJD() const; +      int getLoopLength() const;     protected:        virtual void Parse();     private: -      const item_premiere_content_transmission_reference *s; +      const item_premiere_content_transmission_day *s;     }; -   StructureLoop<StartTimeEntry> startTimeLoop; +   StructureLoop<StartDayEntry> startDayLoop;     int getOriginalNetworkId() const;     int getTransportStreamId() const;     int getServiceId() const; -   int getMJD() const;  protected:     virtual void Parse();  private: diff --git a/libsi/headers.h b/libsi/headers.h index a238ca67..afa3106d 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.6 2006/04/14 10:53:44 kls Exp $ + *   $Id: headers.h 1.7 2006/05/28 14:25:30 kls Exp $   *                                                                         *   ***************************************************************************/ @@ -1790,7 +1790,7 @@ struct descr_application_icons_descriptor_end {  // 0xF2  Content Transmission Descriptor  // http://dvbsnoop.sourceforge.net/examples/example-private-section.html -#define DESCR_PREMIERE_CONTENT_TRANSMISSION_LEN 11 +#define DESCR_PREMIERE_CONTENT_TRANSMISSION_LEN 8  struct descr_premiere_content_transmission {     u_char descriptor_tag                         :8; @@ -1801,14 +1801,19 @@ struct descr_premiere_content_transmission {     u_char original_network_id_lo                 :8;     u_char service_id_hi                          :8;     u_char service_id_lo                          :8; +}; + +#define ITEM_PREMIERE_CONTENT_TRANSMISSION_DAY_LEN 3 + +struct item_premiere_content_transmission_day {     u_char mjd_hi                                 :8;     u_char mjd_lo                                 :8;     u_char start_time_loop                        :8;  }; -#define ITEM_PREMIERE_CONTENT_TRANSMISSION_LEN 3 +#define ITEM_PREMIERE_CONTENT_TRANSMISSION_TIME_LEN 3 -struct item_premiere_content_transmission_reference { +struct item_premiere_content_transmission_time {     u_char start_time_h                           :8;     u_char start_time_m                           :8;     u_char start_time_s                           :8; | 
