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 }