release 0.0.7 trunk 0.0.7
authornathan
Sat, 29 Dec 2007 11:20:04 +0100
branchtrunk
changeset 125213337a6614
parent 11 7196c6d57fab
child 13 967cdf186c96
release 0.0.7
HISTORY
premiereepg.c
     1.1 --- a/HISTORY	Sat Dec 29 11:19:52 2007 +0100
     1.2 +++ b/HISTORY	Sat Dec 29 11:20:04 2007 +0100
     1.3 @@ -1,6 +1,10 @@
     1.4  VDR Plugin 'premiereepg' Revision History
     1.5  -----------------------------------------
     1.6  
     1.7 +21.09.2006: Version 0.0.7
     1.8 +- Added fix for broken EPG data on certain Premiere channels. Must be enabled in
     1.9 +  the plugin setup menu.
    1.10 +
    1.11  05.06.2006: Version 0.0.6
    1.12  - Fixed and improved generation of EventId. You should delete your epg.data file
    1.13    to avoid duplicate entries.
     2.1 --- a/premiereepg.c	Sat Dec 29 11:19:52 2007 +0100
     2.2 +++ b/premiereepg.c	Sat Dec 29 11:20:04 2007 +0100
     2.3 @@ -50,7 +50,7 @@
     2.4  #define PMT_SCAN_TIMEOUT  10  // seconds
     2.5  #define PMT_SCAN_IDLE     300 // seconds
     2.6  
     2.7 -static const char *VERSION        = "0.0.6";
     2.8 +static const char *VERSION        = "0.0.7";
     2.9  static const char *DESCRIPTION    = "Parses extended Premiere EPG data";
    2.10  
    2.11  #if APIVERSNUM < 10401
    2.12 @@ -73,6 +73,7 @@
    2.13    int OptPat;
    2.14    int OrderInfo;
    2.15    int RatingInfo;
    2.16 +  int FixEpg;
    2.17  public:
    2.18    cSetupPremiereEpg(void);
    2.19    };
    2.20 @@ -84,6 +85,7 @@
    2.21    OptPat=1;
    2.22    OrderInfo=1;
    2.23    RatingInfo=1;
    2.24 +  FixEpg=0;
    2.25  }
    2.26  
    2.27  // --- i18n --------------------------------------------------------------------
    2.28 @@ -296,6 +298,23 @@
    2.29      "", // TODO
    2.30      "", // TODO
    2.31    },
    2.32 +  { "Fix EPG data",
    2.33 +    "EPG Daten korrigieren",
    2.34 +    "", // TODO
    2.35 +    "", // TODO
    2.36 +    "", // TODO
    2.37 +    "", // TODO
    2.38 +    "", // TODO
    2.39 +    "", // TODO
    2.40 +    "", // TODO
    2.41 +    "", // TODO
    2.42 +    "", // TODO
    2.43 +    "", // TODO
    2.44 +    "", // TODO
    2.45 +    "", // TODO
    2.46 +    "", // TODO
    2.47 +    "", // TODO
    2.48 +  },
    2.49  
    2.50    { NULL }
    2.51    };
    2.52 @@ -325,6 +344,7 @@
    2.53    Add(new cMenuEditStraItem(tr("Tag option events"),&data.OptPat,NUM_PATS,optDisp));
    2.54    Add(new cMenuEditBoolItem(tr("Show order information"),&data.OrderInfo));
    2.55    Add(new cMenuEditBoolItem(tr("Show rating information"),&data.RatingInfo));
    2.56 +  Add(new cMenuEditBoolItem(tr("Fix EPG data"),&data.FixEpg));
    2.57  }
    2.58  
    2.59  void cMenuSetupPremiereEpg::Store(void)
    2.60 @@ -333,6 +353,7 @@
    2.61    SetupStore("OptionPattern",SetupPE.OptPat);
    2.62    SetupStore("OrderInfo",SetupPE.OrderInfo);
    2.63    SetupStore("RatingInfo",SetupPE.RatingInfo);
    2.64 +  SetupStore("FixEpg",SetupPE.FixEpg);
    2.65  }
    2.66  
    2.67  // --- CRC16 -------------------------------------------------------------------
    2.68 @@ -575,7 +596,19 @@
    2.69          crc[0]=cit.getContentId();
    2.70          SI::PremiereContentTransmissionDescriptor *pct;
    2.71          for(SI::Loop::Iterator it; (pct=(SI::PremiereContentTransmissionDescriptor *)cit.eventDescriptors.getNext(it,SI::PremiereContentTransmissionDescriptorTag)); ) {
    2.72 -          tChannelID channelID(Source(),pct->getOriginalNetworkId(),pct->getTransportStreamId(),pct->getServiceId());
    2.73 +          int nid=pct->getOriginalNetworkId();
    2.74 +          int tid=pct->getTransportStreamId();
    2.75 +          int sid=pct->getServiceId();
    2.76 +          if(SetupPE.FixEpg) {
    2.77 +            if(nid==133) {
    2.78 +	      if     (tid==0x03 && sid==0xf0) { tid=0x02; sid=0xe0; }
    2.79 +	      else if(tid==0x03 && sid==0xf1) { tid=0x02; sid=0xe1; }
    2.80 +	      else if(tid==0x03 && sid==0xf5) { tid=0x03; sid=0xdc; }
    2.81 +	      else if(tid==0x04 && sid==0xd2) { tid=0x11; sid=0xe2; }
    2.82 +	      else if(tid==0x11 && sid==0xd3) { tid=0x11; sid=0xe3; }
    2.83 +              }
    2.84 +            }
    2.85 +          tChannelID channelID(Source(),nid,tid,sid);
    2.86            cChannel *channel=Channels.GetByChannelID(channelID,true);
    2.87            if(!channel) continue;
    2.88  
    2.89 @@ -742,6 +775,7 @@
    2.90    if      (!strcasecmp(Name, "OptionPattern")) SetupPE.OptPat     = atoi(Value);
    2.91    else if (!strcasecmp(Name, "OrderInfo"))     SetupPE.OrderInfo  = atoi(Value);
    2.92    else if (!strcasecmp(Name, "RatingInfo"))    SetupPE.RatingInfo = atoi(Value);
    2.93 +  else if (!strcasecmp(Name, "FixEpg"))        SetupPE.FixEpg     = atoi(Value);
    2.94    else return false;
    2.95    return true;
    2.96  }