Rotor per 1.7.x (un po' lungo)

Tutto quello che ha a che fare con i plugins.

Moderatori: ragno, tapino, alez, zulu, davidea

Rispondi
jbg70
Messaggi: 4
Iscritto il: 06 apr 2008, 10:52

Rotor per 1.7.x (un po' lungo)

Messaggio da jbg70 »

Salve a tutti.
Uso con soddisfazione vdr-1.6.x su Gentoo con una Skystar2 e con plugins vari e funzionanti.

Mi e' appena arrivata la HVR-4000 che gestisce il DVB-S2, e vorrei quindi provarla nel pieno delle sue funzionalita'.

Sono quindi costretto a passare a vdr-1.7.x e con l'occasione decido di fare tutto dai sorgenti per approfondire con vdr.

Ho scaricato e compilato correttamente vdr-1.7.2, ma rotor non si compila, nemmeno con una patch trovata su questo forum, che riporto qui:

Codice: Seleziona tutto

--- ./filter.c   2007-10-14 11:37:13.000000000 +0200
+++ ./filter.c   2008-03-23 17:13:17.000000000 +0100
@@ -368,7 +368,9 @@
         int Ppid = pmt.getPCRPid();
         int Apids[MAXAPIDS + 1] = { 0 };
         int Dpids[MAXDPIDS + 1] = { 0 };
+        int Spids[MAXDPIDS + 1] = { 0 };
 #if VDRVERSNUM >= 10332
+        char SLangs[MAXAPIDS + 1][MAXLANGCODE2] = { "" };
         char ALangs[MAXAPIDS + 1][MAXLANGCODE2] = { "" };
         char DLangs[MAXDPIDS + 1][MAXLANGCODE2] = { "" };
 #else
@@ -448,7 +450,7 @@
                 delete d;
                 }
             }
-        Menu->SetPids(pmt.getServiceId(),Vpid, Vpid ? Ppid : 0, Apids, ALangs, Dpids, DLangs, Tpid);
+        Menu->SetPids(pmt.getServiceId(),Vpid, Vpid ? Ppid : 0, Apids, ALangs, Dpids, DLangs, Spids, SLangs, Tpid);
         Menu->SetCaIds(pmt.getServiceId(),CaDescriptors->CaIds());
         Menu->SetCaDescriptors(pmt.getServiceId(),CaDescriptorHandler.AddCaDescriptors(CaDescriptors));
         }

--- ./menu.c   2007-10-14 11:37:12.000000000 +0200
+++ ./menu.c   2008-03-24 09:12:05.000000000 +0100
@@ -406,6 +406,11 @@
     channel->SetId(Channel[Num].Nid(),Channel[Num].Tid(),Channel[Num].Sid(),channel->Rid());
     int Apids[MAXAPIDS + 1] = { 0 };
     int Dpids[MAXDPIDS + 1] = { 0 };
+
+#if VDRVERSNUM>=10600
+    int  Spids[MAXDPIDS + 1] = { 0 };
+    char SLangs[MAXDPIDS + 1][MAXLANGCODE2] = { "" };
+#endif
 #if VDRVERSNUM>=10332
     char ALangs[MAXAPIDS + 1][MAXLANGCODE2] = { "" };
     char DLangs[MAXDPIDS + 1][MAXLANGCODE2] = { "" };
@@ -414,6 +419,15 @@
     char DLangs[MAXDPIDS + 1][4] = { "" };
 #endif
     int CaIds[MAXCAIDS+1] = { 0 };
+
+#if VDRVERSNUM>=10600
+    for (int i=0; i<=MAXDPIDS; i++)
+    {
+      Spids[i]=Channel[Num].Spid(i);
+      strcpy(SLangs[i],Channel[Num].Slang(i));
+    }
+#endif
+
     for (int i=0; i<=MAXAPIDS; i++)
     {
       Apids[i]=Channel[Num].Apid(i);
@@ -426,7 +440,11 @@
     }
     for (int i=0; i<=MAXCAIDS; i++)
       CaIds[i]=Channel[Num].Ca(i);
+#if VDRVERSNUM>=10600
+    channel->SetPids(Channel[Num].Vpid(),Channel[Num].Ppid(),Apids,ALangs,Dpids,DLangs,Spids,SLangs,Channel[Num].Tpid());
+#else
     channel->SetPids(Channel[Num].Vpid(),Channel[Num].Ppid(),Apids,ALangs,Dpids,DLangs,Channel[Num].Tpid());
+#endif
     channel->SetCaIds(CaIds);
   }
   else
@@ -455,16 +473,18 @@
   num++;
 }

-#if VDRVERSNUM>=10332
-void cMenuScan::SetPids(int Sid,int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int Tpid)
-#else
+#if VDRVERSNUM>=10600
+void cMenuScan::SetPids(int Sid,int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2],int Tpid)
+#elif VDRVERNUM<=10331
 void cMenuScan::SetPids(int Sid,int Vpid, int Ppid, int *Apids, char ALangs[][4], int *Dpids, char DLangs[][4], int Tpid)
+#else
+void cMenuScan::SetPids(int Sid,int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2],int Tpid)
 #endif
 {
   for (int i=0; i<num; i++)
     if (Sid==Channel[i].Sid())
     {
-      Channel[i].SetPids(Vpid,Ppid,Apids,ALangs,Dpids,DLangs,Tpid);
+      Channel[i].SetPids(Vpid,Ppid,Apids,ALangs,Dpids,DLangs,Spids,SLangs,Tpid);
       display(i);
     }
 }

--- ./menu.h   2007-10-14 11:37:12.000000000 +0200
+++ ./menu.h   2008-03-23 17:10:36.000000000 +0100
@@ -116,7 +116,7 @@
   virtual eOSState ProcessKey(eKeys Key);
   void AddChannel(int Num);
   void NewChannel(const cChannel *Transponder, const char *Name, const char *ShortName, const char *Provider, int Nid, int Tid, int Sid);
-  void SetPids(int Sid,int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int Tpid);
+  void SetPids(int Sid,int Vpid, int Ppid, int *Apids, char ALangs[][MAXLANGCODE2], int *Dpids, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
   void SetCaIds(int Sid,const int *CaIds);
   void SetCaDescriptors(int Sid,int Level);
   cChannel* GetChannel(int Sid);
L'errore e' questo:

Codice: Seleziona tutto

g++ -fPIC -O2 -Wall -Woverloaded-virtual -c -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"rotor"' -I../../..//include -I/include menu.c
menu.c: In member function 'virtual eOSState cMainMenuRotor::ProcessKey(eKeys)':
menu.c:304: error: no matching function for call to 'cChannel::SetSatTransponderData(int, int&, char&, int&, fe_code_rate)'
../../..//include/vdr/channels.h:218: note: candidates are: bool cChannel::SetSatTransponderData(int, int, char, int, int, int, int, int)
menu.c:316: error: no matching function for call to 'cChannel::SetSatTransponderData(int, int&, char&, int&, fe_code_rate)'
../../..//include/vdr/channels.h:218: note: candidates are: bool cChannel::SetSatTransponderData(int, int, char, int, int, int, int, int)
menu.c: In member function 'void cMenuScan::AddChannel(int)':
menu.c:444: error: no matching function for call to 'cChannel::SetPids(int, int, int [33], char [33][8], int [17], char [17][8], int [17], char [17][8], int)'
../../..//include/vdr/channels.h:224: note: candidates are: void cChannel::SetPids(int, int, int, int*, char (*)[8], int*, char (*)[8], int*, char (*)[8], int)
menu.c: In member function 'void cMenuScan::SetPids(int, int, int, int*, char (*)[8], int*, char (*)[8], int*, char (*)[8], int)':
menu.c:487: error: no matching function for call to 'cChannel::SetPids(int&, int&, int*&, char (*&)[8], int*&, char (*&)[8], int*&, char (*&)[8], int&)'
../../..//include/vdr/channels.h:224: note: candidates are: void cChannel::SetPids(int, int, int, int*, char (*)[8], int*, char (*)[8], int*, char (*)[8], int)
make[1]: *** [menu.o] Error 1
La versione di rotor che ho scaricato e' Rotor-0.1.4-vdr1.5.7 (l'ultima disponibile e destinata ai vdr > 1.5.7) alla quale ho applicato la patch di sopra.

Ho anche scritto all'autore di rotor, per tentarlo nel fare una versione aggiornata, ma non credo di ricevere risposte, visto che e' da un po' che non sembra lavorarci piu'.

Suggerimenti?
Grazie.
maidiremaik
Messaggi: 381
Iscritto il: 28 mag 2007, 13:21
Località: 192.168.0.2

Re: Rotor per 1.7.x (un po' lungo)

Messaggio da maidiremaik »

io è da un po che ci bestemmio su e mi piacerebbe risolvere anche a me
inizio a pensare che ci sia incompatibilità coi driver multiproto.
hai provato installando gli s2 api se ti funziona???
fai questa prova perchè a me non riesce per mancanza di tempo e facci sapere
ciao!
io usa la skystar hd driver multiproto e vdr 1.7
Rispondi