--- a/process.cpp +++ b/process.cpp @@ -866,6 +866,60 @@ cChannel *cProcessInfosatepg::GetVDRChan if ((chan->Frequency()==frequency) || (chan->Frequency()+1==frequency) || (chan->Frequency()-1==frequency)) { +// XXX should be configurable +#if 1 + char *altname; + cChannel *altchan; + +#if 1 + // handle BR-alpha* (channel has moved) + if (chan->Name()[strlen(chan->Name())-1]=='*') + { + altname=strdup(chan->Name()); + altname[strlen(chan->Name())-1]='\0'; + } else +#endif +#if 1 + // handle ORF2E (ORF2 isn't FTA) + if (!strcmp(chan->Name(),"ORF2")) + { + altname=strdup("ORF2E"); + } else +#endif +#if 1 + // handle HDTV channels + if (asprintf(&altname, "%s HD", chan->Name())==-1) +#endif + return chan; + +#if 1 + // skip Einsfestival HD (not the same as Einsfestival) + if (!strcmp(altname, "Einsfestival HD")) + { + free(altname); + return chan; + } +#endif + + for (int j=0; j<=Channels.MaxNumber(); j++) + { + altchan = Channels.GetByNumber(j,0); + + if (altchan) + { + if (altchan->Source()!=source) continue; +#if 1 + // Only use FTA channels + // XXX should find out if we can decrypt... + if (altchan->Ca()!=CA_FTA) continue; +#endif + + if (strcmp(altchan->Name(), altname)) continue; + free(altname); + return altchan; + } + } +#endif return chan; } }