Analogtv-plugin
Aus VDR Wiki
(Unterschied zwischen Versionen)
Wirbel (Diskussion | Beiträge) (→Probleme) |
Wirbel (Diskussion | Beiträge) (→Softwareanforderungen) |
||
Zeile 17: | Zeile 17: | ||
* Bei PVR 250/350 neuesten Treiber von [http://ivtv.no-ip.info 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 [http://www.poptix.net/ivtv/redirect.html Mailing Liste]. | * Bei PVR 250/350 neuesten Treiber von [http://ivtv.no-ip.info 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 [http://www.poptix.net/ivtv/redirect.html Mailing Liste]. | ||
* libdvb | * libdvb | ||
− | * | + | * Video4Linux2 (v4l2), nicht ivtv |
* ALSA (nur für Softencoder, nicht für PVR Karten) | * ALSA (nur für Softencoder, nicht für PVR Karten) | ||
Version vom 17. September 2005, 12:07 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
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
- Video4Linux2 (v4l2), nicht ivtv
- ALSA (nur für Softencoder, nicht 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;
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 |
[2] | http://sourceforge.net/projects/vdr-analogtv | Projektseite auf 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 |