Analogtv-plugin

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Probleme)
(Links)
Zeile 122: Zeile 122:
 
{|
 
{|
 
| [1]
 
| [1]
| http://akool.bei.t-online.de/vdr/analogtv
+
| http://www.akool.homepage.t-online.de/index.html
 
| Homepage des Plugins (Adresse nicht mehr aktuell)
 
| Homepage des Plugins (Adresse nicht mehr aktuell)
 
|-
 
|-

Version vom 23. Juni 2005, 09:43 Uhr

Inhaltsverzeichnis

Beschreibung

Autor: Andreas Kool

Mit diesem Plugin ist es möglich, analoges TV mit VDR zu benutzen. Die Ausgabe erfolgt über das DVB-Ausgabegerät, d.h. das Plugin verhält sich dem VDR gegenüber wie eine Budget-DVB-Karte.

Unterstützt werden analoge TV-Karten (mit und ohne Hardware-MPEG-encoder) und Video-Grabber Karten, es kann also vom analogen TV-Tuner, Videorekorder o.ä. angeschaut und aufgezeichnet werden.

Bilder

Setup

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 drauf ist, ist ein Software-Encoder nötig. Idealerweise mp1e oder ffmpeg.
  • Bei PVR 250/350 neuesten Treiber von chris kennedy. Dieser muss nicht mehr gepatched werden. Beim Laden sicherstellen, dass ivtv vor den dvb Treibern geladen wird oder aber die channels.conf entsprechend angepaßt wird. Letzter Stand auf Mailing Liste.
  • libdvb
  • Video4Linux V2 (v4l2)
  • ALSA (nur für Softencoder, nicht für PVR Karten)

Installation

libdvbmpeg/transform.c

- static void pes_in_ts(p2p *p)
+ void pes_in_ts(p2p *p)
(dafür gibt es ansonsten im analogtv-Plugin unter /patches auch den Patch libdvb-0.5.4.patch,
der auch für die aktuelle Version 0.5.5 funktioniert)

dvb-mpegtools/Makefile

- install -m 755 dvb_show_image $(PREFIX)/bin/
+ install -m 755 show_dvb_image $(PREFIX)/bin/
(dieser Schritt ist nur bei der Version 0.5.4 erforderlich, bei libdvb 0.5.5 ist der Fehler im Makefile gefixt!)

cd $SOURCEDIR
tar xvzf libdvb-<VERSION>.tar.gz
cd libdvb-<VERSION>
make
make install
ldconfig

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 hier.

Probleme

  • Stottern nach Kanalwechsel im Transfermode zu einer DVB-Karte

Abhilfe mit vdr-1.3.23-stuttering.patch (Bedingung: VDR>=1.3.23!), siehe cvs des analogTV.

  • Compilerfehler cpu_accel.c:63: error: can't find a register in class `BREG' while reloading `asm'

Es hilft folgender Patch für die cpuid Funktion, damit diese sich mit -fPIC kompilieren läßt:

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; 

CVS

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/vdr-analogtv login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/vdr-analogtv co analogtv

Links

[1] http://www.akool.homepage.t-online.de/index.html Homepage des Plugins (Adresse nicht mehr aktuell)
[2] http://sourceforge.net/projects/vdr-analogtv Projektseite auch Sourceforge
[3] http://ivtv.no-ip.info/ neue IVTV Treiber
[4] http://www.metzlerbros.org/dvb/index.html Libdvb
[5] Kanalliste Pal Zuordnung Kanal-Frequenz
[6] http://ivtv.writeme.ch IVTV Wiki
[7] channels.conf analog Grundgerüst analoge channels.conf