Analogtv-plugin
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.
-- Mir scheint, die Weiterentwicklung dieses Plugins stagniert ein wenig. Ich konnte die 0.9.37 trotz einiger Patches (s.u.) nicht mit aktuellem gcc4+VDR13 zum Laufen bekommen. Falls man sowieso eine Karte mit HW-Encoder hat, sollte man sich vielleicht als Alternativen die Plugins pvrinput oder ptv genauer anschauen. --Gernot 10:08, 16. Nov 2005 (CET)
Bilder
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 ivtvdriver.org. Beim Laden sicherstellen, dass ivtv vor den dvb Treibern geladen wird oder aber die channels.conf entsprechend angepaßt 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
Plugin ist zu patchen.
--- 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
}
}
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
- nur eine TV-Karte möglich.
- Stottern nach Kanalwechsel, Abhilfe mit vdr-1.3.23-stuttering.patch (VDR >= 1.3.23!)
- 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:
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;
Snapshot
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 |
| [2] | http://sourceforge.net/projects/vdr-analogtv | Projektseite auf Sourceforge |
| [3] | http://www.ivtvdriver.org/index.php/Main_Page | 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 |