Version Information: $Id: HOWTO,v 1.5 2004/10/19 19:26:15 akool Exp $
Release Information: $Name:  $

Inhaltsverzeichnis
1.    Einführung
2.    Vorbedingungen
3.    FAQ
4.    Installation
4.1   Immer erforderliche Schritte
4.1.1 Plugin auspacken, und VDR-core patchen
4.1.2 LIBDVB erstellen
4.2   Weitere Schritte mit einer Hauppauge PVR
4.2.1 Installation des IvyTV, a Linux iTVC15/16 and CX23415/16 Driver
4.2.2 Installation der Firmware
4.2.3 PVR-Treiber laden
4.2.4 PVR-Karte testen
4.2.5 PVR-Treiber installieren
4.2.6 VDR _nur_ mit einer PVR-Karte
4.3   Weitere Schritte mit einem Software-Encoder
4.3.1 Installation des Realtime MPEG-1 Encoders
4.3.2 Realtime MPEG-1 Encoder testen
5.    Definition der gewünschten Sender/Quellen in der "channels.conf"
6.    EPG
7.    Start
7.1   Start mit einer PVR-Karte
7.2   Start mit einem Software-Encoder
8.    Bedienung
9.    Externe Resourcen


1. Einführung
-------------
  Das VDR-Plugin analogTV ermöglicht, in die rein digitale DVB-Welt des
  VDR analoge Quellen wie
   - analoge Fernsehsender
   - Video-Kameras
   - VHS-Video-Recorder
   - Sky-Digibox
   - generell alle "Set-top-boxen", die nur einen analogen Ausgang haben
  zu integrieren.

  Die dazu nötige Digitalisierung (Wandlung nach MPEG) der analogen Daten
  kann entweder mit einem Hardware-MPEG-Encoder, oder einem
  Software-Encoder durchgeführt werden.

2. Vorbedingungen
-----------------
  Neben diesem Plugin sind folgende Dinge erforderlich:
   - ein VDR 1.1.x, 1.2.x oder 1.3.x
   - die LIBDVB (http://www.metzlerbros.org/dvb/libdvb-0.5.5.tar.gz)
   - falls eine Hardware-Encoder-Lösung realisiert werden soll:
     - eine Hauppauge PVR-250 oder PVR-350 Karte
     - video4linux Version 2 (http://www.bytesex.org/snapshot)
     - IvyTV, a Linux iTVC15/16 and CX23415/16 Driver
       (http://prdownloads.sourceforge.net/ivtv/ivtv-0.1.9.tar.gz?download)
   - falls eine Software-Encoder-Lösung realisiert werden soll:
     - eine vom BTTV-Treiber unterstützte analoge TV-Karte
     - eine Sound-Karte (resp. Onboard-Sound)
     - der Realtime MPEG-Encoder "mp1e"
     - video4linux Version 1 oder 2
     - ALSA- oder OSS-Soundtreiber

  In beiden Fällen ist es zwar nicht zwingend erforderlich, aber sinnlos,
  einen VDR ohne eine zusätzliche Full featured DVB-Karte aufzubauen!

  Optional, falls auch für die analogen Sender ein EPG benötigt wird:
   - Nextview EPG ("http://nxtvepg.sourceforge.net")
   oder
   - hoerzu2vdr (http://www.wontorra.net/filemgmt/index.php)


3. FAQ
------

Q: Wird das Tuner-Modul für die Siemens-DVB-C-Karten unterstützt?
A: Nein. Mit den derzeit verfügbaren DVB-Treibern ist das nicht möglich.

Q: Kann man einen VDR *nur* mit einer analogen (BTTV- oder PVR) Karte
   realisieren?
A: Ja, das ist möglich, macht aber *keinen* Sinn, da so eine Hardware-
   MPEG-Ausgabe fehlt.


4. Installation
---------------
  Die nun folgende Installation hängt grundsätzlich davon ab, ob eine
  Hard- oder eine Software-Encodierung geplant ist.

4.1 Immer erforderliche Schritte
--------------------------------
  Die folgenden Schritte sind - unabhängig von Hard- oder Soft-Encoder
  auf jeden Fall durchzuführen.

4.1.1 Plugin auspacken, und VDR-core patchen
--------------------------------------------
  Wie gewohnt, entpacke das Plugin und erstelle einen Link:

    cd /usr/src/dvb/VDR/PLUGINS/src
    tar xjf /tmp/vdr-analogtv-x.x.x.tar.bz2
    ln -sf analogtv-x.x.x analogtv

  Jetzt muss der VDR gepatcht werden.

    cd ../..

  Der erste Patch korrigiert einen Fehler im VDR, der zu massiven
  Bildstörungen führt.

  *nur* wenn VDR Version 1.2.2 oder kleiner benutzt wird:

    patch -p1 < PLUGINS/src/analogtv/patches/vdr.patch

  Der zweite Patch verhindert, das VDR beim wegschreiben der "channels.conf"
  die zusätzlichen - für analogTV benötigten - Einträge entfernt.

  wenn ein VDR Version 1.2.x *mit* AutoPID-Patch benutzt wird:

    patch -p0 < PLUGINS/src/analogtv/patches/vdr-1.2.4-autopid.patch

  _oder_ wenn ein VDR Version 1.2.x *ohne* AutoPID-Patch benutzt wird:

    patch -p0 < PLUGINS/src/analogtv/patches/vdr-1.2.4.patch

  _oder_ wenn ein VDR Version 1.3.x benutzt wird:

    patch -p1 < PLUGINS/src/analogtv/patches/vdr-1.3.0.patch


4.1.2 LIBDVB erstellen
----------------------
  Nun sollte die LIBDVB installiert werden.

  ACHTUNG:
  Da die LIBDVB Header-Dateien des DVB-Treibers benötigt, muß
  _parallel_ zum DVB Verzeichnis entpackt werden!
  Beim Einsatz von dvb-kernel könnte ein
  ln -sf dvb-kernel/linux/include include
  hilfreich sein ...

    cd /usr/src/dvb
    wget http://www.metzlerbros.org/dvb/libdvb-0.5.5.tar.gz
    tar xzf libdvb-0.5.5.tar.gz
    patch -p1 < VDR/PLUGINS/src/analogtv/patches/libdvb-0.5.4.patch
    cd libdvb-0.5.5
    make
    make install

4.1.3 VDR sowie das Plugin erzeugen
-----------------------------------
  Nun kann der gepatchte VDR sowie das Plugin erzeugt werden:

    cd /usr/src/dvb/VDR
    make plugins-clean
    make clean

    make REMOTE=LIRC
    make plugins

  Final kann dieser neue VDR nebst dem Plugin installiert werden.


4.2 Weitere Schritte mit einer Hauppauge PVR
--------------------------------------------
  Dieses Kapitel ist nur dann relevant, wenn eine PVR-Karte eingesetzt
  werden soll.

4.2.1 Installation des IvyTV, a Linux iTVC15/16 and CX23415/16 Driver
---------------------------------------------------------------------
  Zuerst muß der Treiber für die PVR-Karte installiert werden.

  Es wird empfohlen, die aktuelle Version 0.1.9 von
  http://prdownloads.sourceforge.net/ivtv/ivtv-0.1.9.tar.gz?download
  zu verwenden.

  Alternativ ist der Einsatz neuerer Versionen aus dem CVS möglich:
     cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ivtv login
     cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ivtv co ivtv
  Diese sind jedoch vor mir nie getestet worden.

    cd /usr/src/dvb
    tar xzf ivtv-0.1.9.tar.gz
    cd ivtv
    patch -p2 < ../VDR/PLUGINS/src/analogtv/patches/ivtv-0.1.9.diff
    cd driver
    cp ../utils/videodev2.h .
    make install

  Seit einiger Zeit (Anfang 2004) findet besonders durch
  Chris Kennedy <ckennedy@kmos.org> eine geradezu rasante
  Weiterentwicklung des ivtv-Treibers statt.
  Stand 15. Juli 2004 02:01 Uhr sieht so aus:

    cd /usr/src/dvb
    wget http://kmos.org/~ckennedy/ivtv/ivtv-0.1.10-pre2-ck99y.tgz
    tar xzf ivtv-0.1.10-pre2-ck99y.tgz
    cd ivtv-0.1.10-pre2-ck99y/driver
    make install

  Diese Version muß bzgl. analogTV _nicht_ mehr gepatched werden.


4.2.2 Installation der Firmware
-------------------------------
  Nun muß entsprechend der Anleitung in ../utils/README die Firmware für die
  PVR-Karte aus der CD extrahiert und installiert werden

    cd ../utils
    ./ivtvfwextract.pl

4.2.3 PVR-Treiber laden
-----------------------
  Nun können die Treiber für die PVR-Karte geladen werden.
  Ich bitte dringend darum, für den ersten Test *exakt* folgende Befehle
  zu verwenden, da diese *verbürgt* funktionieren!

    cd ../driver
    modprobe i2c-algo-bit
    modprobe tuner type=5 # 5 == für einen PAL-Tuner
    insmod ./msp3400.o once=1 simple=1 debug=2
    modprobe videodev
    insmod ./saa7115.o
    insmod ./ivtv.o debug=1 mpg_buffers=100 video_nr=0 # ivtv_first_minor=0
    # insmod ./tveeprom.o

4.2.4 PVR-Karte testen
----------------------
  Nun ist es an der Zeit, die PVR-Karte auf korrekte Funktion zu überprüfen.

    ../utils/test_ioctl -u 0xff -p 4 -f width=480,height=576
    cat /dev/video0 > /tmp/test.mpeg

  Der obige Befehl kann nach ca. 1 Minute mit Strg-C abgebrochen werden.
  Nun muß die Datei "/tmp/test.mpeg" entstanden sein. Diese Datei muß
  sich einwandfrei z.b. mit "mplayer" abspielen lassen, wobei sowohl
  Bild als auch Ton korrekt sein müssen!

4.2.5 PVR-Treiber installieren
------------------------------
  Wie und wo die PVR-Treiber später geladen werden, ist Geschmackssache und
  jenseits dieser Anleitung - z.b. können die Treiber in der "runvdr"
  geladen werden.
  Wichtig für später zu wissen ist, als wievielte Video4Linux-Karte der
  PVR-Treiber im System auftaucht ("/dev/videoX").
  Mit der Modul-Option "video_nr=X" des "ivtv.o" Moduls kann angegeben
  werden, unter welcher Minor Device Nummer ("/dev/videoX") der Treiber
  auftauchen soll.

  Bei dem C. Kennedy Treiber heißt die Option nicht "video_nr=", sondern
  "ivtv_first_minor="

4.2.6 VDR _nur_ mit einer PVR-Karte
-----------------------------------

  Dank der Arbeit von Dominic Morris <dom@suborbital.org.uk> gibt es mit dem
  PVR350-Plugin (http://www.rst38.org.uk/vdr/pvr350/vdr-pvr350-0.0.2.tgz)
  nun auch die Möglichkeit, den MPEG-Decoder - und damit den
  TV-Ausgang - der PVR350-Karte zu nutzen.

  ACHTUNG: Dazu ist _zwingend_ eine PVR350-Karte erforderlich, eine
  	   PVR250-Karte besitzt _keinen_ MPEG-Decoder!!

  Folgendermaßen habe ich einen VDR aufgebaut, der _nur_ eine PVR350-Karte
  besitzt:

   - Linux-2.6
   - ckennedy-ivtv-Treiber
     wget http://kmos.org/~ckennedy/ivtv/ivtv-0.1.10-pre2-ck100b.tgz
     tar xzf ivtv-0.1.10-pre2-ck100b.tgz
     cd ivtv-0.1.10-pre2-ck100b/driver
     make install
     modprobe ivtv
     modprobe ivtv-fb
   - wget http://www.rst38.org.uk/vdr/pvr350/vdr-pvr350-0.0.3.tgz
   - vdr -Ppvr350 -Panalogtv

  Wird die PVR350-Karte als TV-Out verwendet:
   - gibt es keinerlei Stottern!
   - kann die Video-Bitrate beliebig hoch gedreht werden!
   - kann PVR-TS verwendet werden!
   - ist das umschalten zwischen analogen Kanälen sehr schnell!
   - funktioniert auch nxTVepg!

  Im OSD-Setup sollte "PVR350 TV-Ausgang verwenden" auf JA gestellt werden.
  Dadurch verlassen - solange keine Aufnahme stattfindet - die MPEG-Daten
  nie die PVR-Karte, sondern werden direkt vom Encoder zum Decoder
  weitergegeben.

  In diesem PassThrough Modus sind alle MPEG-Encoder-Parameter wie Audio-/
  Video-Bitrate, MPEG-Ts / MPEG-PES irrelevant.


4.3 Weitere Schritte mit einem Software-Encoder
-----------------------------------------------
  Dieses Kapitel ist nur dann relevant, wenn ein Software-Encoder eingesetzt
  werden soll.

4.3.1 Installation des Realtime MPEG-1 Encoders
-----------------------------------------------
    cd /usr/src/dvb
    cvs -d:pserver:anonymous@cvs.zapping.sf.net:/cvsroot/zapping login
    cvs -z3 -d:pserver:anonymous@cvs.zapping.sf.net:/cvsroot/zapping co rte/mp1e
    cvs -z3 -d:pserver:anonymous@cvs.zapping.sf.net:/cvsroot/zapping co rte/src
    patch -p0 < VDR/PLUGINS/src/analogtv/patches/mp1e.patch
    cd rte/mp1e
    ./configure
    make
    make install

4.3.2 Realtime MPEG-1 Encoder testen
------------------------------------
    mp1e -v > /tmp/test.mpeg

  Der obige Befehl kann nach ca. 1 Minute mit Strg-C abgebrochen werden.
  Nun muß die Datei "/tmp/test.mpeg" entstanden sein. Diese Datei muß
  sich einwandfrei z.b. mit "mplayer" abspielen lassen, wobei sowohl
  Bild als auch Ton korrekt sein müssen!


***************************************************************************
  Puh! Wer erfolgreich bis hier gekommen ist, sollte sich nun erstmal eine
  kleine Pause gönnen, denn auch die nächsten Schritte sind leider nicht
  ohne!
***************************************************************************


5. Definition der gewünschten Sender/Quellen in der "channels.conf"

  Alle Fernsehsender sowie analogen Anschlüsse, die man mit Hilfe dieses
  Plugins betrachten will, müssen in die Datei "channels.conf" eingetragen
  werden.

  Im Verzeichnis "examples" befinden sich diverse Beispiele, die
  möglicherweise als Ausgangspunkt verwandt werden können.

  Die einzelnen Felder der channel definition:

  -> "RTL:210250:B6C0D0:C:0:301:300:0:32001:12003:0:0:0"

  Name       - Sendername

  Frequency  - Frequenz in Hz, siehe z.b. beiliegende "europe-west.list"
	       Geräte/Eingänge, die _keinen_ Tuner besitzen
	       (wie der S-Video- oder Composite-Eingang) müssen hier
               mit der Frequenz 1 definiert werden (vdr-1.2.6 und höher
               akzeptiert leider eine Frequenz 0 nicht mehr)

  Parameters - Norm:
	       B6 = PAL
	       B7 = NTSC
               B8 = SECAM

               Capture device:
               C0  = /dev/video0
               C12 = /dev/video1
               C23 = /dev/video2
               C34 = /dev/video3
               C45 = /dev/video4

               Video source:
               D0  = Television
               D12 = Composite1
               D23 = Composite2
               D34 = S-Video

  Source     - fix "C"

  Srate      - fix "0"

  VPID       - die gewünschte Video PID (fix 301)

  APID       - die gewünschte Audio PID (fix 300), optional Mixer-Input-Device

  TPID       - die gewünschte Teletext PID (beliebig und z.Zt. belanglos)

  CA         - fix "32001" bei vdr-1.1 sowie vdr-1.2, fix "A0" bei vdr-1.3

  SID        - Service ID (siehe z.b. beiliegende "ChannelMap.h")

  NID        - for future use, currently always 0

  TID        - for future use, currently always 0

  RID        - fix "0" (oder beliebige Werte, um ansonsten doppelte
  	       Einträge zu ermöglichen)


  In die Spalte SID sollte mit Hilfe der beiliegenden "ChannelMap.h"
  die Service ID des jeweiligen Senders eingetragen werden. Dadurch
  wird es problemlos möglich, auch analoge Sender mit Hilfe des
  tvtv-Plugins zu programmieren.


  In der "examples/channels.conf.analogue.IESY" befinden sich bereits drei
  Beispieleinträge für alternative analoge Geräte:

  -> WEBCam:1:B6C23D0:C:0:160:80:0:32001:65002:0:0:0

  Eine WEBCam, die via USB (als "/dev/video2") angeschlossen ist. Damit kann
  man sich selber im Fernsehen sehen oder aufnehmen ;-)

  -> Composite:1:B6C0D12:C:0:160:80,6:0:32001:65003:0:0:0

  Der Composite-Eingang der TV-Karte.
  Bei diesem Eintrag sieht man via "Apid2=6", wie ein alternativer
  Mixer-Eingang angegeben werden kann, sprich: normalerweise kommt der
  Ton aus dem Eingang, der im OSD-Setup eingetragen wurde. Wird jedoch
  vom Composite1 Eingang abgespielt, soll das OSS-Device "6" ("Line")
  verwandt werden.

  -> S-Video:1:B6C0D23:C:0:160:80:0:32001:65004:0:0:1

  Der S-Video-Eingang der TV-Karte. Damit kann man prima alte VHS-Video
  Kassetten in .vdr Dateien umwandeln :-)


  Nochmals zusammengefasst (aufgrund diverser Nachfragen ;-):

  Entscheidend sind die Spalten

  Frequency
    Die jeweilige Senderfrequenz in Hz (siehe z.b. xawtv, die Homepage
    des Kabelanbieters oder die Beispiele in "examples/*")

  Parameters
    In dieser Spalte werden gleich 3 Schlüsselparameter festgelegt.

    1. Die Fernsehnorm. In Deutschland ist dies PAL, in Frankreich SECAM.

    2. Aus welchem ("/dev/videoX") Device kommt das Videosignal des
       bttv- oder ivtv-Treibers?
       Hierbei ist entscheidend, in welcher Reihenfolge die diversen
       Video4Linux-Treiber geladen wurden.

       Falls zuerst der bttv-Treiber geladen wird, und dann der DVB-Treiber,
       und dann eine USB-WebCam, sieht das so aus:

         /dev/video0 - bttv (TV-Karte) => "C0"
      	 /dev/video1 - DVB-Treiber     => "C12"
      	 /dev/video2 - USB-WebCam      => "C23"

       Ergo muß in die Spalte Parameters "C0" für die TV-Karte, und
       "C23" für die WebCam eingetragen werden.

    3. Wo kommt das Video-Signal her? (siehe auch hier xawtv), bei einer
       Hauppauge WinTV ist das z.b.:
         0 = Television  => "D0"
      	 1 = Composite1  => "D12"
      	 2 = Composite2  => "D23"
      	 3 = S-Video     => "D34"

       Bei einer PVR-Karte siehst das hingegen so aus:
         4 = Tuner 0     => "D45"
      	 0 = Composite 0 => "D0"
      	 5 = Composite 4 (via Chinch) => "D56"
      	 9 = S-Video     	      => "D89"

6. EPG
------
  Um auch für die analogen Sender ein EPG zu erhalten, bietet dieses
  Plugin zwei Möglichkeiten an.

  Zum einen kann sowohl bei der Hardware- als auch bei der Software-
  Encoder-Lösung das externe Programm hoerzu2vdr
  (http://www.wontorra.net/filemgmt/index.php) eingesetzt werden.

  Bei Einsatz der Software-Encoder-Lösung oder den ckennedy-ivtv-Treibern 
  kann alternativ das Programm
  Nextview EPG ("http://nxtvepg.sourceforge.net") eingesetzt werden.

7. Start
--------
  Ich rate *dringend* dazu, für den ersten Test des analogTV-Plugins den
  VDR von Hand und im Vordergrund zu starten, d.h.

    cd /video
    ./vdr -Panalogtv

  da nur so evtl. Fehlermeldungen sichtbar werden!

7.1 Start mit einer PVR-Karte
-----------------------------
  Bei Einsatz einer Hauppauge PVR-Karte müssen folgende Meldungen ausgegeben
  werden:

| analogTV: 12:30:16 analogTV version 0.9.31 starting up ...
| analogTV: 12:30:16 Detected VDR version 1.3.6
|                 W A R N I N G: Unstable development version!
| analogTV: 12:30:16 Detected AC3overDVB patch version 0.2.4
| analogTV: 12:30:17 Detected ConfigDirectory()="/video-1.3/plugins"
| analogTV: 12:30:17 CPU Intel(R) Pentium(R) 4 CPU 2.40GHz, family 15, model 2, stepping 4
| analogTV: 12:30:17 CPU measured at 2405.473MHz
| analogTV: 12:30:17 Using MMXEXT optimized memcpy()
| analogTV: 12:30:20 Switching to channel 0 on device 0
| analogTV: 12:30:20 Switching to channel 1 on device 0
> ab hier muß ein Fernsehprogramm (bei mir Channel 1: ARD - Digital) auf dem
  angeschlossenen Fernsehgerät sichtbar sein.

| analogTV: 12:31:04 Switching to channel 0 on device 4
> hier habe ich mit der Fernbedienung auf KABEL1 geswitched, bei mir
  leider nur analog verfügbar

| analogTV: 12:31:04 Channel: KABEL1, SID=899, 280.25 MHz (S18), PAL
>----------------------------------------------^^^^^^^^^^
Die Senderfrequenz von "KABEL1"

| analogTV: 12:31:04 Video device: /dev/video0
| analogTV: 12:31:04 Video source: 4:
| analogTV: 12:31:04 NEW videodev=/dev/video0
>---------------------------------^^^^^^^^^^^
Das Linux-Device des PVR-Treibers

| analogTV: 12:31:04 Detected V4L version 2
| analogTV: 12:31:04 Detected capture device Vanilla iTVC15 card
| analogTV: 12:31:04 This device have a tuner
| analogTV: 12:31:04 This device is able for capturing
| analogTV: 12:31:04 This device have a onboard MPEG-Encoder
>--------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hurra, unter "/dev/video0" hat analogTV einen MPEG-Encoder (die PVR-Karte!)
gefunden

| analogTV: 12:31:04 Detected Input#0: Composite 0
| analogTV: 12:31:04 Detected Input#1: Composite 1
| analogTV: 12:31:04 Detected Input#2: Composite 2
| analogTV: 12:31:04 Detected Input#3: Composite 3
| analogTV: 12:31:04 Detected Input#4: Tuner 0
| analogTV: 12:31:04 Detected Input#5: Composite 4
| analogTV: 12:31:04 Detected Input#6: S-Video 0
| analogTV: 12:31:04 Detected Input#7: S-Video 1
| analogTV: 12:31:04 Detected Input#8: S-Video 2
| analogTV: 12:31:04 Detected Input#9: S-Video 3
>-----------------------------------^^^^^^^^^^^^^^
Diese Eingänge (der Eintrag "D" in der Parameters-Spalte der "channels.conf")
stellt diese Karte zur Verfügung

| analogTV: 12:31:04 NEW Frequency=280250 + 0
| analogTV: 12:31:04 NEW videonorm=PAL
| analogTV: 12:31:04 NEW videosource=4:Tuner 0
| analogTV: 12:31:04 NEW picture properties
| analogTV: 12:31:04 NEW PVR MPEG-Encoder parameter(s)
| analogTV: 12:31:04 PVR Norm=0:PAL
| analogTV: 12:31:04 PVR MPEG-PES, aspect 16:9, VBR, 3:2 pulldown
| analogTV: 12:31:04 PVR Videobitrate=1800000 (max=2700000)
| analogTV: 12:31:04 PVR 12 frames/GOP, 3 B-frames, GOP closed
| analogTV: 12:31:04 PVR DNR:spatial and temporal (type=0, spatial=0, temporal=0)
| analogTV: 12:31:04 PVR Audiobitrate=192 (Mask=0xa9)
| analogTV: 12:31:04 PVR Picture size=480x576
| analogTV: 12:31:04 PVR Input=4:Tuner 0
| analogTV: 12:31:04 PVR Frequency=4484
| analogTV: 12:31:04 PVR brightness=17 (50.0%) contrast=18 (52.9%) colour=17 (50.0%) hue=17 (50.0%)
| analogTV: 12:31:04 PVR saa7115 brightness=128 contrast=68 colour=64 hue=0
| analogTV: 12:31:04 PVR Volume=59636
>--------------------^^^
das Plugin programmiert die PVR-Karte, in obigem Fall:
Frequenz=280250, Fernsehnorm PAL, Video-Eingang "4:Tuner"
daneben Audio- sowie Video-Bitraten, Bildgröße sowie diverse andere

| analogTV: 12:31:04 Switching to channel 139 on device 4
| analogTV: 12:31:04 NEW Audio-PID=300, Video-PID=301, PCR-PID=-1
| analogTV: 12:31:04 PVR Audio-PID=300, Video-PID=301, PCR-PID=-1
| analogTV: 12:31:04 readPVR(Apid=300, Vpid=301)
| analogTV: 12:31:05 PVR reader continuing
| analogTV: 12:31:06 skipped 34968 byte to sync on next GOP
>--------------------^^^^^^^^^^^^^^^^^^^^^
Jetzt gehts los! Ab jetzt muß die folgende Zeile angezeigt werden, wobei
sich alle Zahlen ständig ändern:

| 24.6 MB A:0:01:14.504 v:0:01:15.440 v-A:0:00:00.935 D:14.48% CPU: 4.9%
>  (1)    (2)    (3)    (4)   (5)     (6)     (7)        (8)      (9)
Diese diversen Zahlen haben folgende Bedeutung:
(1) Die Gesamtmenge an MPEG-Daten, die bislang durch das analogTV-Plugin
    durchgelaufen sind
(2) "A" = die Audio-PTS ist aufsteigend
    "a" = die Audio-PTS ist absteigend
    "?" = die Audio-PTS bleibt gleich
(3) Die Audio-PTS
(4) "V" = die Video-PTS ist aufsteigend
    "v" = die Video-PTS ist absteigend
    "?" = die Video-PTS bleibt gleich
(5) Die Video-PTS
(6) "V-A" = die Video-PTS läuft der Audio-PTS voraus
    "A-V" = die Audio-PTS läuft der Video-PTS voraus
(7) Die Differenz zwischen Audio- und Video-PTS
(8) Die Gesamtmenge an gedroppten MPEG-Daten
    (in der Hauptsache irrelevante Pids)
(9) Die Belastung der Haupt-CPU

Jetzt muß (im obigen Beispiel) das Fernsehprogramm von KABEL1 auf dem
angeschlossenen Fernsehgerät sichtbar sein!

Nun schalte ich wieder um - zurück auf einen digitalen Sender.
Zuerst zeigt das Plugin eine Statistik über die dargestellten MPEG-Frames
an:
| analogTV: 12:32:49 TS: Stats video (301): 139458 packets
| analogTV: 12:32:49 TS: Stats audio (300): 14616 packets
| analogTV: 12:32:49 TS: Stats PCR   (302): 0 packets
> Die Audio- Video- sowie (evtl.) PCR-Packets. Jedes dieser Packets ist
  188 Byte groß - ein Transport-Stream Packet.

| analogTV: 12:32:49 TS: Stats       (0): 12901 packets
| analogTV: 12:32:49 TS: Stats       (1024): 12901 packets
> sonstige Pids

| analogTV: 12:32:49 TS: Stats     skipped: 25988 packets
> die Gesamtmenge der weggeworfenen TS-Packets

| analogTV: 12:32:49 TS: Stats  duplicates: 0 packets
> die Gesamtmenge der doppelten TS-Packets (muß stets 0 sein)

| analogTV: 12:32:49 TS: Stats got 0 TS errors, 0 TS continuity errors
> die Gesamtmenge an defekten TS-Packets (muß stets 0 sein), sowie
  die Gesamtmenge der nicht fortlaufend durchnummerierten
  TS-Packets (muß stets 0 sein)

| analogTV: 12:32:49 TS: Stats 33816688 bytes total, 4885744 skipped
> die Gesamtmenge der durch das Plugin gelaufenen sowie übersprungenen Bytes

| analogTV: 12:32:49 PVR reader suspended
> das Plugin ist nun suspendiert

| analogTV: 12:33:24 Ringbuffer max usage: 216140 byte (out of 2097152 byte) = 10.3%
| analogTV: 12:33:24 Largest data packet from PVR-card was 88064 byte long
| analogTV: 12:33:24 1069 PES frame(s), 180707 TS frame(s) processed (total, incl. dropped)
| analogTV: 12:33:24 29056960 byte PES, 33972916 byte TS (total, incl. dropped)
| analogTV: 12:33:24 0 TS frame(s) dropped (ringbuffer was full)
| analogTV: 12:33:24 0 PES frame(s) dropped
| analogTV: 12:33:24 35 PES frame(s) dropped while not on a analogue channel
> diverse statistische Daten über den Ringbuffer zwischen der PVR-Karte und
  dem PES nach TS remuxer.

| analogTV: 12:33:24 PVR reader stopped.
> nach einer gewissen Zeit wird das Plugin vollständig gestoppt


7.2 Start mit einem Software-Encoder
------------------------------------
  Bei Einsatz eines Software-Encoders müssen folgende Meldungen ausgegeben
  werden:

| analogTV: 12:34:14 analogTV version 0.9.31 starting up ...
| analogTV: 12:34:14 Detected VDR version 1.3.6
|                 W A R N I N G: Unstable development version!
| analogTV: 12:34:14 Detected ElchiAIO4d patch
| analogTV: 12:34:14 Detected AC3overDVB patch version 0.2.4
| analogTV: 12:34:16 Detected ConfigDirectory()="/video-1.3/plugins"
| analogTV: 12:34:16 CPU AMD Athlon(tm) Processor, family 6, model 4, stepping 4
| analogTV: 12:34:16 CPU measured at 1045.618MHz
| analogTV: 12:34:16 Using MMXEXT optimized memcpy()
| analogTV: 12:34:16 Switching to channel 0 on device 0
| analogTV: 12:34:16 Switching to channel 1 on device 0
> ab hier muß ein Fernsehprogramm (bei mir Channel 1: ARD - Digital) auf dem
  angeschlossenen Fernsehgerät sichtbar sein.

| analogTV: 12:34:35 Switching to channel 0 on device 0
| analogTV: 12:34:35 Switching to channel 0 on device 4
| analogTV: 12:34:35 Channel: KABEL1, SID=899, 280.25 MHz (S18), PAL
>----------------------------------------------^^^^^^^^^^
Die Senderfrequenz von "KABEL1"

| analogTV: 12:34:35 Video device: /dev/video0
| analogTV: 12:34:35 Video source: 0:
| analogTV: 12:34:35 NEW videodev=/dev/video0
>---------------------------------^^^^^^^^^^^
Das Linux-Device des BTTV-Treibers

| analogTV: 12:34:35 Detected V4L version 2
| analogTV: 12:34:35 Detected capture device BT878(Pinnacle PCTV Studio/Ra)
| analogTV: 12:34:35 This device have a tuner
| analogTV: 12:34:35 This device is able for capturing
Hurra, unter "/dev/video0" hat analogTV eine Pinnacle PCTV Studio/Ra-
Karte gefunden

| analogTV: 12:34:35 Detected Input#0: Television
| analogTV: 12:34:35 Detected Input#1: Composite1
| analogTV: 12:34:35 Detected Input#2: Composite2
| analogTV: 12:34:35 Detected Input#3: S-Video
>-----------------------------------^^^^^^^^^^^^^^
Diese Eingänge (der Eintrag "D" in der Parameters-Spalte der "channels.conf")
stellt diese Karte zur Verfügung

| analogTV: 12:34:35 NEW Frequency=280250 + 0
| analogTV: 12:34:35 NEW videonorm=PAL
| analogTV: 12:34:35 NEW videosource=0:Television
| analogTV: 12:34:35 NEW picture properties
| analogTV: 12:34:35 setPictureProperties(brightness=18 (52.9%), contrast=14 (41.2%), colour=16 (47.1%), hue=15 (44.1%))
| analogTV: 12:34:35 tune(4484) [frequency=280250, freqOffset=16, ofs=0]
| analogTV: 12:34:35 setNorm(0:PAL (0xff))
>--------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
das Plugin programmiert die TV-Karte, in obigem Fall:
Frequenz=280250, Fernsehnorm PAL, Video-Eingang "0:Television"

| analogTV: 12:34:35 Switching to channel 141 on device 4
| analogTV: 12:34:35 NEW Audio-PID=300, Video-PID=301, PCR-PID=-1
| analogTV: 12:34:35 runEncoder(Apid=300, Vpid=301)
| analogTV: 12:34:35 mp1e -j -e 1 -t 256 -g IBBPBBPBBPBBP -p /dev/dsp -c /dev/video0 -x /dev/mixer -d 0 -a 0 -b 5000000 -B 160 -r 14,60 -s 352x288 -S 44.1 -F 8 -G 368x288 -o /tmp/.analogtv.avi &
>--------------------^^^^
Exakt hier passiert das wichtigste überhaupt: Der Software-Encoder wird
gestartet

| analogTV: 12:34:35 Switching to channel 141 on device 0
| analogTV: 12:34:35 Sucessfully set encoder priority to -15
| analogTV: 12:34:35 flush_buffer()
| analogTV: 12:34:36 skipped 10528 byte to sync on next GOP
Jetzt gehts los! Ab jetzt muß die folgende Zeile angezeigt werden, wobei
sich alle Zahlen ständig ändern:

| 20.9 MB A:0:00:27.661 V:0:00:27.714 V-A:0:00:00.053 D:14.00% CPU:36.5%
>  (1)    (2)    (3)    (4)   (5)     (6)     (7)        (8)      (9)
Diese diversen Zahlen haben folgende Bedeutung:
(1) Die Gesamtmenge an MPEG-Daten, die bislang durch das analogTV-Plugin
    durchgelaufen sind
(2) "A" = die Audio-PTS ist aufsteigend
    "a" = die Audio-PTS ist absteigend
    "?" = die Audio-PTS bleibt gleich
(3) Die Audio-PTS
(4) "V" = die Video-PTS ist aufsteigend
    "v" = die Video-PTS ist absteigend
    "?" = die Video-PTS bleibt gleich
(5) Die Video-PTS
(6) "V-A" = die Video-PTS läuft der Audio-PTS voraus
    "A-V" = die Audio-PTS läuft der Video-PTS voraus
(7) Die Differenz zwischen Audio- und Video-PTS
(8) Die Gesamtmenge an gedroppten MPEG-Daten
    (in der Hauptsache irrelevante Pids)
(9) Die Belastung der Haupt-CPU

Jetzt muß (im obigen Beispiel) das Fernsehprogramm von KABEL1 auf dem
angeschlossenen Fernsehgerät sichtbar sein!

Nun schalte ich wieder um - zurück auf einen digitalen Sender.
Zuerst zeigt das Plugin eine Statistik über die dargestellten MPEG-Frames
an:
| PES: Stats 23849648 bytes total, 0 skipped, 0 zero-gaps. 0 slow syncs, 0 saved headers
| PES: Stats C0: 374 packets
| PES: Stats E0: 11282 packets
>----
Dies sind statistische Werte über die Anzahl bearbeiteter PES-Packete
vom VDR

| analogTV: 12:35:14 TS: Stats video (301): 135889 packets
| analogTV: 12:35:14 TS: Stats audio (300): 4488 packets
> Die Audio- Video- sowie (evtl.) PCR-Packets. Jedes dieser Packets ist
  188 Byte groß - ein Transport-Stream Packet.

| analogTV: 12:35:14 TS: Stats       (0): 11383 packets
| analogTV: 12:35:14 TS: Stats       (1024): 11383 packets
> sonstige Pids

| analogTV: 12:35:14 TS: Stats     skipped: 22822 packets
> die Gesamtmenge der weggeworfenen TS-Packets

| analogTV: 12:35:14 TS: Stats  duplicates: 0 packets
> die Gesamtmenge der doppelten TS-Packets (muß stets 0 sein)

| analogTV: 12:35:14 TS: Stats got 0 TS errors, 0 TS continuity errors
> die Gesamtmenge an defekten TS-Packets (muß stets 0 sein), sowie
  die Gesamtmenge der nicht fortlaufend durchnummerierten
  TS-Packets (muß stets 0 sein)

| analogTV: 12:35:14 TS: Stats 30670884 bytes total, 4290536 skipped
> die Gesamtmenge der durch das Plugin gelaufenen sowie übersprungenen Bytes

| analogTV: 12:35:14 Switching to channel 0 on device 0
| analogTV: 12:35:14 Switching to channel 1 on device 0


8. Bedienung
------------
  Einfach auf den gewünschten Sender wechseln und gucken oder aufnehmen ;-)

  Da dieses Plugin für den VDR eine vollständige DVB-Karte darstellt, sind
  alle VDR-Features (wie Timeshift, Timergesteuerte Aufnahmen usw.) ganz
  normal nutzbar.

  Besser ausgedrückt entspricht dieses Plugin einer budget-DVB-Karte, was
  bedeutet, daß man den VDR zwar durchaus nur mit einer analogen TV-Karte
  und diesem Plugin verwenden kann, aber *sehen* kann man nichts!

  Um das Fernsehprogramm auch zu sehen, benötigt man *auf*jeden*Fall* eine
  Karte mit einem Hardware-MPEG-Decoder (full featured DVB-, DXR3- oder
  Hollywood-Plus-Karte). Diese TV-Out-Karte muß sich nicht in dem Rechner
  mit der Analog-TV-Karte befinden, sondern kann Dank des streamdev-Plugin
  auch in irgend einem anderen (über LAN erreichbaren) Rechner stecken!

  Alternativ kann Dank des pvr350-Plugins der Hardware-MPEG-Decoder der
  PVR-350-Karte verwendet werden.

  Über das Hauptmenü des VDR ("Setup AnalogTV") oder über
  "Setup->Plugins->analogtv" kommt man in die Einstellungen für den
  analogTV-Plugin. Z.Zt. werden die Einstellungen *nur* abgespeichert, wenn
  das Menu via Setup->Plugins->analogtv aufgerufen wird!


  Dieses Setup ist in mehrere Kapitel unterteilt:

    - Picture Properties ---
      Brightness
      Contrast
      Colour
      Hue
      Finetune

   Diese Einstellungen sind nur sichtbar, wenn z.Zt. ein analoger Sender
   eingestellt ist. Hier lassen sich in Echtzeit (d.h. alle Einstellungen
   werden sofort wirksam) Helligkeit, Kontrast, Farbe, Sättung sowie ein
   Feinabgleich der Senderfrequenz einstellen.

    - EPG ---
      EPG from
      External program
      EPG provider
      Autoupdate (hours)
      Theme language

   Hier werden die konkreten Einstellungen für die Zuführung des EPG
   vorgenommen - siehe dazu das entsprechende EPG-Kapitel.

   - MPEG Encoder ---

 - sync hack
   sollte immer auf "YES" stehen.
   Bewirkt, daß das Plugin beim Umschalten auf einen analogen Sender
   alle MPEG-Frames (von der PVR-Karte) wegwirft, bis ein neues GOP
   (Group-of-pictures) beginnt.

 - wining hack
   kann auf "NO" stehen.
   Bewirkt, das beim Umschalten auf einen analogen Sender kein "weinerlicher"
   Ton entsteht.

 - picture properties hack
   Kann auf "NO" bleiben.
   Das ist für Leute, die noch Video4Linux-1 verwenden. Dort ist mehrfaches
   öffnen von "/dev/video0" nicht möglich. Dieser "Hack" umgeht dieses
   Problem.

 - stuttering hack
   Sollte auf "YES" stehen.
   Entfernt eines von zwei Ton-Stotter-Problemen der PVR-Karten.

9. Externe Resourcen
--------------------
  Z.b. unter http://www.koneczny.info/Linux/VDR/PVR.html ist eine Anleitung
  zu finden, wie die Infrarot-Fernbedienung der PVR-Karte nutzbar gemacht
  werden kann.

