Analogtv-plugin

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
Zeile 2: Zeile 2:
 
'''Autor:''' Andreas Kool
 
'''Autor:''' Andreas Kool
  
Mit diesem Plugin ist es möglich, analoges TV mit dem VDR zu empfangen. Die Ausgabe erfolgt über das DVB-Ausgabegerät, d. h. das Plugin verhält sich dem VDR gegenüber wie eine Budget-DVB-Karte.
+
Dieses Plugin war das erste Plugin, welches analoges TV in VDR ermöglichte.
  
Unterstützt werden analoge TV-Karten sowohl mit als auch ohne Hardware-MPEG-Encoder sowie Video-Grabber-Karten.
+
{{Box Hinweis|'''BITTE NICHT MEHR AUF DIESES PLUGIN IN VDR-WIKIs VERWEISEN.'''<br>Dieses Plugin ist seit Jahren verweist, hat keine offizielle Homepage mehr, nicht mehr mit aktuellen VDR Versionen funktionierend und ohne Änderungen nicht mehr verwendbar. Bitte benutzt und empfehlt das [[pvrinput-plugin]] anstelle dieses Plugins.}}
Damit kann man Analog-TV schauen und aufzeichnen oder aber auch mit einem an den Videoeingang der Karte angeschlossenen Rekorder Filme digitalisieren.
+
 
+
<!-- ===Status=== -->
+
 
+
==Bilder==
+
[[Bild:analogtv-plugin.jpg|thumb|none|''Einstellungen'']]
+
 
+
<!-- ==Bedienung== -->
+
<!-- ===[[SVDRP]] Befehle=== -->
+
 
+
==Hardwareanforderungen==
+
* Man benötigt eine [[Analog-TV]]-Karte. Diese Karte muss entweder vom bttv Treiber, dem ivtv Treiber oder dem pvrusb2 Treiber unterstützt werden.
+
* Weiterhin ist ein Realtime [[MPEG]]-Encoder nötig, entweder in Hardware, s.h. Hauppauge PVR250/350/PVR USB2, oder als Software (s.u.).
+
 
+
==Softwareanforderungen==
+
* Wenn kein Hardware-[[MPEG]]-Encoder mit Linux-Treiberunterstützung auf der TV-Karte ist, dann ist ein Software-Encoder nötig. Idealerweise mp1e oder {{wikipedia|FFmpeg}}.
+
* Bei PVR 250/350 den neuesten Treiber benutzen: [http://www.ivtvdriver.org/index.php/Main_Page ivtvdriver.org]. Beim Laden sicherstellen, dass ivtv vor den DVB-Treibern geladen wird oder aber, dass die channels.conf entsprechend angepasst wird.
+
* libdvb
+
* Video4Linux2 (v4l2) (entfällt für PVR-Karten)
+
* ALSA (entfällt für PVR-Karten)
+
 
+
==Installation==
+
cd $SOURCEDIR
+
tar xvzf libdvb-<VERSION>.tar.gz
+
cd libdvb-<VERSION>
+
make
+
make install
+
ldconfig
+
 
+
<!-- ===Optionen=== -->
+
===Patches===
+
Plugin ist zu patchen (damit erspart man sich das Patchen der libdvb wie im Plugin-README eigentlich beschrieben).
+
 
+
<pre>
+
--- VDR.org/PLUGINS/src/analogtv-0.9.37/player-analogtv.c 2005-07-07 16:32:50.000000000 +0200
+
+++ VDR/PLUGINS/src/analogtv-0.9.37/player-analogtv.c 2005-07-07 16:36:30.000000000 +0200
+
@@ -28,7 +28,6 @@
+
#include <sys/soundcard.h>
+
 
+
#include <transform.h>
+
-extern void pes_in_ts(p2p *p);
+
#undef MIN
+
#undef MAX
+
 
+
@@ -828,7 +827,7 @@
+
                pes++;
+
                spes += r;
+
+
-                get_pes(buffer, r, &p2t, pes_in_ts); // PES -> TS
+
+                kpes_to_ts(&p2t, buffer, r);
+
              }
+
            }
+
          }
+
@@ -937,7 +936,7 @@
+
      spes += r;
+
 
+
      if (r > 0)
+
-        get_pes(buffer, r, &p2t, pes_in_ts); // PES -> TS
+
+        kpes_to_ts(&p2t, buffer, r); // PES -> TS
+
    }
+
  }
+
</pre>
+
 
+
Der Rest der Installation folgt der README und README.de des Plugins.
+
Hinweis: Für ivtv > 0.1.9 muss VPID=301, APID=300 in der channels.conf verwendet werden.
+
 
+
Ein Grundgerüst für eine analoge ''channels.conf'' findet sich [[channels.conf_analog|hier]].
+
 
+
<!-- ==Konfiguration== -->
+
<!-- ===Einstellungen=== -->
+
<!-- ===Parameter=== -->
+
 
+
==Sonstiges==
+
===Probleme===
+
* nur eine TV-Karte möglich
+
 
+
* Stottern nach Kanalwechsel, Abhilfe mit [http://cvs.sourceforge.net/viewcvs.py/vdr-analogtv/analogtv/patches/?sortby=date#dirlist vdr-1.3.23-stuttering.patch (VDR >= 1.3.23!)]
+
 
+
* Compilerfehler '''invalid lvalue in assignment''' mit gcc4: Abhilfe bringt folgender Patch.
+
<pre>
+
diff -ur analogtv-0.9.37/memcpy.c analogtv-0.9.37-new/memcpy.c
+
--- analogtv-0.9.37/memcpy.c    2005-01-09 19:16:09.000000000 +0100
+
+++ analogtv-0.9.37-new/memcpy.c        2005-11-14 22:17:22.000000000 +0100
+
@@ -211,8 +211,8 @@
+
        "movntps %%xmm2, 32(%1)\n"
+
        "movntps %%xmm3, 48(%1)\n"
+
        :: "r" (from), "r" (to) : "memory");
+
-        ((const unsigned char *)from)+=64;
+
-        ((unsigned char *)to)+=64;
+
+        from=((const unsigned char*)from)+64;
+
+        to=((unsigned char *)to)+64;
+
      }
+
    else
+
      /*
+
@@ -233,8 +233,8 @@
+
        "movntps %%xmm2, 32(%1)\n"
+
        "movntps %%xmm3, 48(%1)\n"
+
        :: "r" (from), "r" (to) : "memory");
+
-        ((const unsigned char *)from)+=64;
+
-        ((unsigned char *)to)+=64;
+
+        from=((const unsigned char *)from)+64;
+
+        to=((unsigned char *)to)+64;
+
      }
+
    /* since movntq is weakly-ordered, a "sfence"
+
      * is needed to become ordered again. */
+
@@ -288,8 +288,8 @@
+
      "movq %%mm6, 48(%1)\n"
+
      "movq %%mm7, 56(%1)\n"
+
      :: "r" (from), "r" (to) : "memory");
+
-      ((const unsigned char *)from)+=64;
+
-      ((unsigned char *)to)+=64;
+
+      from=((const unsigned char *)from)+64;
+
+      to=((unsigned char *)to)+64;
+
    }
+
    __asm__ __volatile__ ("emms":::"memory");
+
  }
+
@@ -349,8 +349,8 @@
+
      "movntq %%mm6, 48(%1)\n"
+
      "movntq %%mm7, 56(%1)\n"
+
      :: "r" (from), "r" (to) : "memory");
+
-      ((const unsigned char *)from)+=64;
+
-      ((unsigned char *)to)+=64;
+
+      from=((const unsigned char *)from)+64;
+
+      to=((unsigned char *)to)+64;
+
    }
+
      /* since movntq is weakly-ordered, a "sfence"
+
      * is needed to become ordered again. */
+
</pre>
+
 
+
* Klasse '''cDevice''' unbekannt bei Einsatz eines aktuellen VDR 1.3.x: Abhilfe bringt folgender Patch.
+
<pre>diff -ur analogtv-0.9.37/device.h analogtv-0.9.37-new/device.h
+
--- analogtv-0.9.37/device.h    2005-01-09 19:16:08.000000000 +0100
+
+++ analogtv-0.9.37-new/device.h        2005-11-14 21:26:59.000000000 +0100
+
@@ -14,7 +14,8 @@
+
#ifndef DEVICE_H
+
#define DEVICE_H
+
 
+
#include <vdr/plugin.h>
+
+#include <vdr/device.h>
+
 
+
#include "redremote.h"
+
</pre>
+
 
+
* Compilerfehler '''cpu_accel.c:63: error: can't find a register in class `BREG' while reloading `asm' ''': Abhilfe: Patch für die cpuid Funktion, damit diese sich mit -fPIC kompilieren läßt.
+
<pre>
+
diff -ru analogtv-0.9.37.orig/cpu_accel.c analogtv-0.9.37/cpu_accel.c
+
--- analogtv-0.9.37.orig/cpu_accel.c 2005-05-13 23:49:38.000000000 +0200
+
+++ analogtv-0.9.37/cpu_accel.c 2005-05-13 23:57:49.000000000 +0200
+
@@ -50,30 +50,44 @@
+
    int AMD;
+
    uint32_t caps;
+
+
+#if !defined(PIC) && !defined(__PIC__)
+
#define cpuid(op,eax,ebx,ecx,edx) \
+
-    asm ("cpuid" \
+
+    __asm__ ("cpuid" \
+
: "=a" (eax), \
+
  "=b" (ebx), \
+
  "=c" (ecx), \
+
  "=d" (edx) \
+
: "a" (op) \
+
: "cc")
+
+#else  /* PIC version : save ebx */
+
+#define cpuid(op,eax,ebx,ecx,edx)      \
+
+    __asm__ ("push %%ebx\n\t"          \
+
+            "cpuid\n\t"                \
+
+            "movl %%ebx,%1\n\t"        \
+
+            "pop %%ebx"                \
+
+            : "=a" (eax),              \
+
+              "=r" (ebx),              \
+
+              "=c" (ecx),              \
+
+              "=d" (edx)              \
+
+            : "a" (op)                \
+
+            : "cc")
+
+#endif
+
+
   
+
-    asm ("pushfl\n\t"
+
- "pushfl\n\t"
+
- "popl %0\n\t"
+
- "movl %0,%1\n\t"
+
- "xorl $0x200000,%0\n\t"
+
- "pushl %0\n\t"
+
- "popfl\n\t"
+
- "pushfl\n\t"
+
- "popl %0\n\t"
+
- "popfl"
+
-        : "=a" (eax),
+
-   "=b" (ebx)
+
- :
+
- : "cc");
+
+  __asm__ ("pushf\n\t"
+
+            "pushf\n\t"
+
+            "pop %0\n\t"
+
+            "movl %0,%1\n\t"
+
+            "xorl $0x200000,%0\n\t"
+
+            "push %0\n\t"
+
+            "popf\n\t"
+
+            "pushf\n\t"
+
+            "pop %0\n\t"
+
+            "popf"
+
+            : "=r" (eax),
+
+              "=r" (ebx)
+
+            :
+
+            : "cc");
+
+
    if (eax == ebx) /* no cpuid */
+
      return 0;
+
</pre>
+
 
+
* Compilerfehler: '''cpuinfo.c:72: error: PIC register ‘%ebx’ clobbered in ‘asm’''', Abhilfe: Der folgende patch, oder Deaktivieren der kompletten Routinen durch Deaktiveren von <tt>HAVE_FAST_MEMCPY</tt> im <tt>Makefile</tt>
+
 
+
<pre>
+
diff -uprN new/cpuinfo.c orig/cpuinfo.c
+
--- new/cpuinfo.c 2005-12-11 14:22:27.000000000 +0100
+
+++ orig/cpuinfo.c 2005-12-11 14:10:21.000000000 +0100
+
@@ -62,18 +62,15 @@ typedef struct cpuid_regs {
+
    unsigned int edx;
+
} cpuid_regs_t;
+
+
-static cpuid_regs_t
+
-cpuid(int func) {
+
- cpuid_regs_t regs;
+
-#define CPUID ".byte 0x0f, 0xa2; "
+
- asm("push %%ebx; "
+
-     "movl %4,%%eax; " CPUID
+
-     "movl %%eax,%0; movl %%ebx,%1; movl %%ecx,%2; movl %%edx,%3; "
+
-     "pop %%ebx"
+
- : "=m" (regs.eax), "=m" (regs.ebx), "=m" (regs.ecx), "=m" (regs.edx)
+
- : "g" (func)
+
- : "%eax", "%ecx", "%edx");
+
- return regs;
+
+static cpuid_regs_t cpuid( int func ) {
+
+    cpuid_regs_t regs;
+
+#define CPUID ".byte 0x0f, 0xa2; "
+
+    asm("movl %4,%%eax; " CPUID
+
+        "movl %%eax,%0; movl %%ebx,%1; movl %%ecx,%2; movl %%edx,%3"
+
+            : "=m" (regs.eax), "=m" (regs.ebx), "=m" (regs.ecx), "=m" (regs.edx)
+
+            : "g" (func)
+
+            : "%eax", "%ebx", "%ecx", "%edx");
+
+    return regs;
+
}
+
+
#define X86_VENDOR_INTEL 0
+
diff -uprN new/memcpy.c orig/memcpy.c
+
--- new/memcpy.c 2005-12-11 14:03:54.000000000 +0100
+
+++ orig/memcpy.c 2005-12-11 14:10:21.000000000 +0100
+
@@ -168,11 +168,9 @@ int d0, d1, d2;
+
/* SSE note: i tried to move 128 bytes a time instead of 64 but it
+
didn't make any measureable difference. i'm using 64 for the sake of
+
simplicity. [MF] */
+
-static void * sse_memcpy(void * into, const void * infrom, size_t len)
+
+static void * sse_memcpy(void * to, const void * from, size_t len)
+
{
+
  void *retval;
+
-  unsigned char* to=(unsigned char*)into;
+
-  unsigned char* from=(unsigned char*)infrom;
+
  size_t i;
+
  retval = to;
+
   
+
@@ -213,8 +211,8 @@ static void * sse_memcpy(void * into, co
+
        "movntps %%xmm2, 32(%1)\n"
+
        "movntps %%xmm3, 48(%1)\n"
+
        :: "r" (from), "r" (to) : "memory");
+
-        *from+=64;
+
-        *to+=64;
+
+        ((const unsigned char *)from)+=64;
+
+        ((unsigned char *)to)+=64;
+
      }
+
    else
+
      /*
+
@@ -235,8 +233,8 @@ static void * sse_memcpy(void * into, co
+
        "movntps %%xmm2, 32(%1)\n"
+
        "movntps %%xmm3, 48(%1)\n"
+
        :: "r" (from), "r" (to) : "memory");
+
-        *from+=64;
+
-        *to+=64;
+
+        ((const unsigned char *)from)+=64;
+
+        ((unsigned char *)to)+=64;
+
      }
+
    /* since movntq is weakly-ordered, a "sfence"
+
      * is needed to become ordered again. */
+
@@ -251,11 +249,9 @@ static void * sse_memcpy(void * into, co
+
  return retval;
+
}
+
+
-static void * mmx_memcpy(void * into, const void * infrom, size_t len)
+
+static void * mmx_memcpy(void * to, const void * from, size_t len)
+
{
+
  void *retval;
+
-  unsigned char* to=(unsigned char*)into;
+
-  unsigned char* from=(unsigned char*)infrom;
+
  size_t i;
+
  retval = to;
+
+
@@ -292,8 +288,8 @@ static void * mmx_memcpy(void * into, co
+
      "movq %%mm6, 48(%1)\n"
+
      "movq %%mm7, 56(%1)\n"
+
      :: "r" (from), "r" (to) : "memory");
+
-      *from+=64;
+
-      *to+=64;
+
+      ((const unsigned char *)from)+=64;
+
+      ((unsigned char *)to)+=64;
+
    }
+
    __asm__ __volatile__ ("emms":::"memory");
+
  }
+
@@ -304,11 +300,9 @@ static void * mmx_memcpy(void * into, co
+
  return retval;
+
}
+
+
-void * mmx2_memcpy(void * into, const void * infrom, size_t len)
+
+void * mmx2_memcpy(void * to, const void * from, size_t len)
+
{
+
  void *retval;
+
-  unsigned char* to=(unsigned char*)into;
+
-  unsigned char* from=(unsigned char*)infrom;
+
  size_t i;
+
  retval = to;
+
+
@@ -355,8 +349,8 @@ void * mmx2_memcpy(void * into, const vo
+
      "movntq %%mm6, 48(%1)\n"
+
      "movntq %%mm7, 56(%1)\n"
+
      :: "r" (from), "r" (to) : "memory");
+
-      *from+=64;
+
-      *to+=64;
+
+      ((const unsigned char *)from)+=64;
+
+      ((unsigned char *)to)+=64;
+
    }
+
      /* since movntq is weakly-ordered, a "sfence"
+
      * is needed to become ordered again. */
+
 
+
</pre>
+
 
+
<!-- ===Tipps=== -->
+
<!-- ===Wunschliste=== -->
+
 
+
===Snapshot===
+
<pre>
+
cvs -d:pserver:anonymous@vdr-analogtv.cvs.sourceforge.net:/cvsroot/vdr-analogtv login
+
cvs -z3 -d:pserver:anonymous@vdr-analogtv.cvs.sourceforge.net:/cvsroot/vdr-analogtv co analogtv
+
</pre>
+
 
+
==Versions-Historie==
+
{| width=100% class="wikitable"
+
|-
+
! Version
+
! Datum
+
! Beschreibung
+
! Link
+
|-
+
| 0.9.35
+
| 16.09.2004
+
|
+
| [http://www.vdr-portal.de/board/thread.php?threadid=22507]
+
|-
+
| 0.9.25
+
| 04.01.2004
+
|
+
| [http://www.vdr-portal.de/board/thread.php?threadid=10356]
+
|-
+
| 0.9.0
+
| 26.07.2003
+
|
+
| [http://www.vdr-portal.de/board/thread.php?threadid=4187]
+
|-
+
| 0.7.0
+
| 06.06.2003
+
|
+
| [http://www.vdr-portal.de/board/thread.php?threadid=3116]
+
|-
+
| 0.4.0
+
| 21.04.2003
+
|
+
* added "Dont stop Encoder" feature
+
* tuning now reliable??
+
* integrated dvb-mpegtools-0.2.5
+
* integrated Renes "remux.c" as of april 8. 2003
+
* Nun kann der MPEG-Encoder ausgewählt werden, z.Zt. sind "mp1e", "ffmpeg" sowie "fame" möglich.
+
* removed libavcodec ;-) Ab jetzt wird der Encoder jeweils als externes Programm immer wieder neu gestartet.
+
|
+
|-
+
| 0.3.0
+
| 01.04.2003
+
|
+
* removed "mp1e", now using libavcodec (from FFmpeg)
+
|
+
|-
+
| 0.2.2
+
| 31.01.2003
+
|
+
* HideMainMenu feature added
+
|
+
|-
+
| 0.2.1
+
| 29.03.2003
+
|
+
* mit ALSA-0.9.2 ist es absolut Lippensynchron!
+
* third version of Renes remuxer
+
* Absturzhäufigkeit beim Umschalten massiv verringert
+
* second version of Renes remuxer
+
* added a patch for vdradmin-0.23 to work
+
* added missing translations in i18n.c
+
* Better statistics in EPG take over
+
* dont enter "WEBcam" oder "s-video" entry into the EPG
+
| [http://www.vdr-portal.de/board/thread.php?threadid=1795]
+
|-
+
| 0.2.0
+
| 15.03.2003
+
|
+
* Cleanup, released to the public.
+
| [http://www.vdr-portal.de/board/thread.php?threadid=1629]
+
|-
+
| 0.2.0.pre5
+
| 15.03.2003
+
|
+
* Problem mit dem AC3overDVB-patch gelöst.
+
* alle exit() des mp1e entfernt.
+
|
+
|-
+
| 0.2.0.pre4
+
| 15.03.2003
+
|
+
* Plugin kann nun auch verwendet werden, wenn kein ALSA-0.9 vorhanden ist
+
* Zeilentrennung zwischen EPG-Descriptions unterschiedlicher Provider eingefügt (dazu muß nxtvepg neu gepatched/compiliert/installiert werden)
+
|
+
|-
+
| 0.2.0.pre3
+
| 14.03.2003
+
|
+
* Übernahme des analogen EPG funzt (Danke an Klaus Schmidinger für den entscheidenen Tip)
+
|
+
|-
+
| 0.2.0.pre2
+
| 12.03.2003
+
|
+
* "Ringbuffer FULL" Problem gelöst
+
|
+
|-
+
| 0.2.0.pre1
+
| 11.03.2003
+
|
+
* der DURCHBRUCH! Rene Bredlau <murray@blubber.de> hat erfolgreich den PES->TS Remuxer neu geschrieben. Sämtliche Bildstörungen sind weg, die A/V-Sync-Probleme ebenso! Dazu wird allerdings ein Patch gegen den vdr-1.1.25 benötigt.
+
|
+
|-
+
| 0.1.0
+
| 10.03.2003
+
|
+
* Patch from Rene Bredlau <murray@blubber.de> (setPictureProperties_v4l25()) added
+
* fixed a bug in cAnalogtvEPGhandler
+
* fixed a bug in setPictureProperties()(setting colour, contrast, hue and brightness now working again - maybe only with v4l ...)
+
* new mp1e available in CVS (Added UYVY support) - please do a checkout!!
+
* Tested "non-interlaced-patch" from http://zhubr.tamb.ru/gatos.html (see "TEST") but without success :-( The picture *is* non-interlaced, but "stottert"
+
|
+
|-
+
| 0.0.9
+
| 07.03.2003
+
|
+
* Patches from Rene Bredlau <murray@blubber.de> added
+
|
+
|-
+
| 0.0.8
+
| 06.03.2003
+
|
+
* ALSA, V4L2, V4L25 support added (V4L25 not finished yet)
+
* MPEG-2 enabled, but does not work
+
* EPG Übernahme funktioniert
+
* ACHTUNG: Wichtige Änderung: Die Spalte SID in der "channels.conf" muß nun mit "+10" angegeben werden, d.h. "/dev/video0" -> 10
+
|
+
|-
+
| 0.0.7
+
| 05.03.2003
+
|
+
* Added a first try of integrating the Nextview EPG - chrashes VDR :-(
+
|
+
|-
+
| 0.0.6
+
| 04.03.2003
+
|
+
* Code cleanup, more Encoder-Options in Setup (for example Encoder=[MPEG-1|MPEG-2] ;-) - chrashes VDR :-(
+
|
+
|-
+
| 0.0.5
+
| 03.03.2003
+
|
+
* einige Einstellungen aus dem Setup wieder entfernt, und als Einträge in die "channels.conf" gepackt. Daduch werden "Kanäle" wie: - WEBcam - S-Video-Eingang möglich.
+
|
+
|-
+
| 0.0.4
+
| 02.03.2003
+
|
+
* Setup erweitert (Kontrast, Helligkeit etc.)
+
| [http://www.vdr-portal.de/board/thread.php?threadid=1468]
+
|-
+
| 0.0.3
+
| 02.03.2003
+
|
+
* alle mp1e Threads werden sauber beendet, sowie alle Resourcen freigegeben. Damit ist umschalten zwischen verschiedenen analog-Kanälen möglich! Pheew, das war eine lange Nacht ...
+
|
+
|-
+
| 0.0.2
+
| 28.02.2003
+
|
+
* analogTV is no longer a cPlayer, its a cDevice as suggested by Klaus Schmidinger and Sascha Volkenandt.
+
|
+
|-
+
| 0.0.1
+
| 25.02.2003
+
|
+
* released to the public.
+
|
+
|-
+
| 0.0.0
+
| 20.02.2003
+
|
+
* Initial revision.
+
|
+
|}
+
  
  
 
==Links==
 
==Links==
# [http://vdr-analogtv.cvs.sourceforge.net/viewvc/vdr-analogtv/analogtv/ cvs browse bei sourceforge]
+
# [[pvrinput-plugin]]
# [http://sourceforge.net/projects/vdr-analogtv Projektseite auf Sourceforge]
+
# [[Kanal PAL|Kanalliste Pal Zuordnung Kanal-Frequenz]]
+
# [[channels.conf analog|Grundgerüst analoge channels.conf]]
+
  
 
[[Kategorie:Veraltete Plugins]]
 
[[Kategorie:Veraltete Plugins]]
 
{{i18n|analogtv-plugin}}
 
{{i18n|analogtv-plugin}}

Aktuelle Version vom 3. Januar 2014, 12:42 Uhr

[Bearbeiten] Beschreibung

Autor: Andreas Kool

Dieses Plugin war das erste Plugin, welches analoges TV in VDR ermöglichte.

Hinweis
Hinweis

BITTE NICHT MEHR AUF DIESES PLUGIN IN VDR-WIKIs VERWEISEN.
Dieses Plugin ist seit Jahren verweist, hat keine offizielle Homepage mehr, nicht mehr mit aktuellen VDR Versionen funktionierend und ohne Änderungen nicht mehr verwendbar. Bitte benutzt und empfehlt das pvrinput-plugin anstelle dieses Plugins.



[Bearbeiten] Links

  1. pvrinput-plugin
In anderen Sprachen