[ANNOUNCE] vdr-femon-1.7.7 vdr-iptv-0.4.0 vdr-skinsoppalusikka-1.7.1 vdr-rssreader-1.7.0

Message ID 4B9A5ED8.1060806@tvdr.de
State New
Headers

Commit Message

Klaus Schmidinger March 12, 2010, 3:33 p.m. UTC
  On 08.03.2010 04:22, ????????? ?????? wrote:
> Hi
> 
>> IPTV doesn't need patches anymore.
> Fine :)
> 
> But I have another trouble.
> 
> create channel
> RENTV;IPTV:10:S=1|P=1|F=UDP|U=239.4.0.1|A=2020:I:27500:300=2:301:0:0:1:0:0:0
> 
> 
> Start vdr and select it, works fine.
> Change to sat channel, and select iptv again
> 
> The channel can't selected, in log:
> 
> Mar  8 12:57:57 ua0lnjvdr vdr: [6823] ERROR: Invalid channel parameters:
> S=1
> Mar  8 12:57:57 ua0lnjvdr vdr: [6823] ERROR: Unrecognized IPTV address: S=1
> Mar  8 12:57:57 ua0lnjvdr vdr: [6823] ERROR: Can't start Transfer Mode!
> 
> After this, in channels.conf  have:
> 
> RENTV;IPTV:10:S=1:I:27500:300=2:301:0:0:1:0:0:0
> 
> I found also http://www.vdr-portal.de/board/thread.php?threadid=94442
> 
> Any suggestions?

Not sure if this applies here, but there was a bug in VDR 1.7.13's
channel editing in cDvbSourceParam.
The attached patch fixes this.

Klaus
  

Comments

Rolf Ahrenberg March 12, 2010, 4:48 p.m. UTC | #1
On Fri, 12 Mar 2010, Klaus Schmidinger wrote:

> Not sure if this applies here, but there was a bug in VDR 1.7.13's
> channel editing in cDvbSourceParam.

Well, there were bugs also in the plugin, but those should already be 
fixed in 0.4.1.

BR,
--
rofa
  

Patch

--- dvbdevice.c	2010/03/06 11:07:05	2.30
+++ dvbdevice.c	2010/03/07 11:45:43	2.31
@@ -576,7 +576,7 @@ 
 class cDvbSourceParam : public cSourceParam {
 private:
   int param;
-  cChannel data;
+  int srate;
   cDvbTransponderParameters dtp;
 public:
   cDvbSourceParam(char Source, const char *Description);
@@ -589,19 +589,19 @@ 
 :cSourceParam(Source, Description)
 {
   param = 0;
+  srate = 0;
 }
 
 void cDvbSourceParam::SetData(cChannel *Channel)
 {
-  data = *Channel;
-  dtp.Parse(data.Parameters());
+  srate = Channel->Srate();
+  dtp.Parse(Channel->Parameters());
   param = 0;
 }
 
 void cDvbSourceParam::GetData(cChannel *Channel)
 {
-  data.SetTransponderData(Channel->Source(), Channel->Frequency(), data.Srate(), dtp.ToString(Source()), true);
-  *Channel = data;
+  Channel->SetTransponderData(Channel->Source(), Channel->Frequency(), srate, dtp.ToString(Source()), true);
 }
 
 cOsdItem *cDvbSourceParam::GetOsdItem(void)
@@ -612,7 +612,7 @@ 
   switch (param++) {
     case  0: ST("  S ")  return new cMenuEditChrItem( tr("Polarization"), &dtp.polarization, "hvlr");             else return GetOsdItem();
     case  1: ST("  S ")  return new cMenuEditMapItem( tr("System"),       &dtp.system,       SystemValues);       else return GetOsdItem();
-    case  2: ST(" CS ")  return new cMenuEditIntItem( tr("Srate"),        &data.srate);                           else return GetOsdItem();
+    case  2: ST(" CS ")  return new cMenuEditIntItem( tr("Srate"),        &srate);                                else return GetOsdItem();
     case  3: ST("ACST")  return new cMenuEditMapItem( tr("Inversion"),    &dtp.inversion,    InversionValues);    else return GetOsdItem();
     case  4: ST(" CST")  return new cMenuEditMapItem( tr("CoderateH"),    &dtp.coderateH,    CoderateValues);     else return GetOsdItem();
     case  5: ST("   T")  return new cMenuEditMapItem( tr("CoderateL"),    &dtp.coderateL,    CoderateValues);     else return GetOsdItem();