Kurze Anleitung fuer den Dekoder (Version 0.966):

Funktionsprinzip:

Der Dekoder dekodiert Videosignale von Premiere und anderen, nach
dem gleichen Verfahren (Nagravision) arbeitende PayTV-Programme
z. B. TeleClub. Diverse englische PayTV-Programme arbeiten
nach Videocrypt und koennen hiermit nicht dekodiert werden.
Zur Dekodierung wird das Videosgnal von einer, mit dem Bt848/878-Chip
arbeitenden Videokarte (Hauppauge WinTV-PCI u. aehnliches) benutzt.
Das Dekodierverfahren beruht auf der Analyse des Bildinhaltes, wodurch
es keine Schluessel oder aehnliches benoetigt, allerdings auch
Schwierigkeiten bei bestimmten Bildinhalten auftreten.
Da es sich hierbei um Videodatenverarbeitung in Echtzeit handelt,
werden hohe Ansprueche an den verwendeten Rechner gestellt.

Systemvorraussetzungen:

- CPU mindestens Pentium-MMX (ab 166 MHz) oder kompatibel
- Mainboard mit neuerem PCI-Chipsatz (Chipsets vor "Triton" sind viel
  zu langsam hinsichtlich Speicher und PCI-Bus)
- min. 32 MB (besser 64 MB) schneller Hauptspeicher 
   (SDRAM auf TX-/LX- oder BX-Board ist empfohlen)
- Win95 oder Win98
- Videokarte mit Bt848/Bt878-Chip (z. B Hauppauge WinTV, Miro PCTV)
- halbwegs schnelle Grafikkarte mit Direct-Draw-Treiber (DirectX 3 oder 
  hoeher - wird auch fuer WinTV benoetigt)
- 30 MB Festplattenplatz
- zur Ausgabe ueber Video auf den Fernseher: 
     Grafikkarte ELSA Winner 2000/Office

Installation:


- benoetigte Dateien:
    DEK2.EXE, DEK.INI, KEY.TXT, WINTV7.VXD, PERM2.VXD
- alle Dateien in ein Verzeichnis kopieren
- wichtige Daten noch laufender Programme speichern
- den Dekoder "DEK".EXE" starten. Dabei werden beim ersten Start 
  und bei Notwendigkeit die Dateien CRCA.BIN und TABLES.BIN neu erzeugt.
  (ca. 2 min)
- in der, danach erscheinenden Liste die richtige Karte und den richtigen
  Tunertyp auswaehlen (die Kartenauswahl ist fuer die richtige Audioausgabe
  notwendig, bei falschem Tunertyp geht das Kanal-Umschalten nicht richtig)

- im, danach erscheinenden Fenster kann man den gewuenschten Bildschirm-Modus
  einstellen (im Zweifelsfall einfach OK druecken - das Programm versucht
  selbst den besten Modus zu finden)

Programmbedienung allgemein:

- Das Einstellungsfenster kann immer mit Click der rechten Maustaste auf das
  Videofenster geoeffnet werden

- in jedem Tabsheet (oder wie auch immer man das Ding nennt) gibt es einen
  Button "Speichern". Dieser speichert alle Einstellungen dieses Tabsheets
  in die INI-Datei.


Kanaleinstellung:

- das Durchschalten der Kanaele erfolgt immer mit '+' und '-' auf
  dem Nummernblock

- sind im Tabsheet "Kanal" keine Programme in der Liste werden die Kanaele
  in folgender Reihenfolge vorwaerts bzw. rueckwaerts durchgeschalten:
           - Video-In 1 und 2
           - VHF Kanal K2..12
           - Sonderkanaele S2..41
           - UHF Kanal K21..70

- Programme werden wie folgt angelegt:
   1. Button neu druecken
   2. im erscheinenden Dialog einen beliebigen Namen angeben 
   3. in der Combobox "Kanal" den passenden Kanal einstellen
   4. evtl. Feinabstimmung einstellen
   5. nach Eingabe aller Programme Speichern nicht vergessen !

- es koennen bis zu 100 Programme angelegt werden

- die Abstimmung kann auch spaeter geaendert werden (danach speichern)

- den Austausch und das Loeschen von Programmen kann mit Hilfe eines
  Editors durch Manipulation der Sektion [Programs] in der INI-Datei
  vorgenommen werden

- sobald Programme in der Liste stehen schaltet '+' und '-' nur noch die
  Programme in dieser Liste vorwaerts und ruckwaerts durch


Grafik-Modus:

- stellt den Bildschirmmodus und den Ausgabemodus ein

- im laufenden Betrieb kann der Modus durch den Button "Modus wechseln"
  eingestellt werden. Dabei wird der Dekoder neu initialisiert.

- verschiedene Ausgabemodi - warum:
   Je nach Faehigkeit der Grafikhardware, des Grafiktreibers und 
   Geschwindigkeit des Prozessors kann ein anderer Modus der optimale sein
   (in Bezug auf Geschwindigkeit und Darstellungsqualitaet). Auch gehen
   nicht in jedem Bildschirmmodus alle Ausgabemodi:
     - im 256-Farb-Modus kann nur Overlay gehen, wenn das die Karte
       unterstuetzt
     - im 24-Bit Trucolor-Modus geht meist gar nichts
     - in allen Modi auszer RGB-Direkt wird zusaetzlicher Grafikspeicher
       im nichtsichtbaren Bereich benoetigt (ist der Grafikspeicher voll
       belegt geht nur RGB-Direkt z. B. bei 1152*864 mit Truecolor auf 4 MB
       Grafikspeicher)
     - Der Dekoder arbeitet, wenn moeglich mit mehreren Hintergrundbuffern,
       um stoerende Kanten und Schlieren bei Bewegungen zu unterdruecken
       ( Double- bzw. Mehrfachbuffering). Das braucht natuerlich mehr
       Grafikspeicher

- die Ausgabemodi:
   YUV-Blit: Das Bild wird in einem Hintergrundbuffer im YUV-Format (das ist 
             das Format, in dem das Videosignal von der Karte kommt) abgelegt.
             Dann wird es mit einem Blit-Befehl vom Grafikchip in den
             sichtbaren Bildspeicher befoerdert und dabei auf RGB umgerechnet.
             Da der Grafikchip die Umrechnung nach RGB uebernimmt, braucht der
             Prozessor das nicht zu tun und kann sich sinnvolleren Aufgaben
             widmen ...
             Dieser Modus ist bei besseren Grafikkarten der optimale (auszer
             Matrox, da dort auf Grund eines Fehlers die Darstellung recht
             langsam geht).
   Overlay:  Das Bild wird in einem Hintergrundbuffer im YUV-Format abgelegt.
             Der Grafikchip stellt mit Hardware-Unterstuetzung in dem 
             entsprechenden Bildbereich das Bild als Overlay dar. Der
             sichtbare Bereich wird mit Hilfe eines Colorkeys gesteuert (das
             ist die rosa Farbe im Videofenster, die man sieht wenn die 
             Videoausgabe mal nicht funktionierte)
             Die Prozessorbelastung ist aehnlich niedrig, wie bei YUV-Blit.
             Leider ist echtes (Hardware-) Overlay bei modernen Grafikkarten
             meist nicht implementiert (oder nur als Emulation ueber YUV-Blit).
   RGB-Blit: Das Bild wird in einem Hintergrundbuffer im RGB-Format abgelegt.
             Der Prozessor uebernimmt dabei die Umrechnung YUV->RGB.
             Dann wird es mit einem Blit-Befehl vom Grafikchip in den
             sichtbaren Bildspeicher befoerdert.
             Die Prozessorbelastung ist deutlich hoeher (volle
             Geschwindigkeit bei voller Aufloesung geht erst auf Pentium II/
             Celeron oder K6-2).
             Dieser Modus sollte mit fast allen Grafikkarten gehen, wenn genug
             Grafikspeicher vorhanden ist.
   RGB-Direkt: Das Bild wird auf dem sichtbaren Bildschirm im RGB-Format
             abgelegt. Es wird kein zusaetzlicher Grafikspeicher benoetigt.
             Da direkt auf den sichtbaren Bildschirm geschrieben wird, kann
             im Normalfall kein Fenster vor dem Videofenster liegen (es wird
             gnadlenlos ueberschrieben). Auszerdem ist keine Skalierung des
             Videofensters moeglich. Um das Einstellungsfenster sichtbar zu
             machen, wird in diesem Moment auf Blit ueber GDI-Funktionen
             umgeschlalten. Die Darstellung erfolgt dann sehr langsam.
             Die Prozessorbelastung ist natuerlich aehnlich hoch, wie bei
             RGB-Blit.

- alle Ausgabemodi, die markiert sind testet der Dekoder durch (von oben
  nach unten. Der erste Funktionierende wird dann genommen.

- der Punkt rechts von den Checkboxen zeigt, welche Modi laut Direct-Draw-
  Infos gehen sollten. Das kann aus verschiedenen Gruenden mit den wirklich
  funktionierenden Modi differieren ist aber als Hinweis zu werten.

- zum Ueberpruefen des gewaehlten Modus am besten "Statuszeile anzeigen" im
  Tabsheet "Spezial" anmachen

- "Videoausgabe aktvieren (PERMEDIA2)":
    Damit wird die direkte Videausgabe auf einer "ELSA Winner 2000/Office"
    aktiviert, die unter Umgehung der ELSA-Software  den Videoausgang direkt
    ansteuert ( bedeutet optimale Videoqualitaet auf dem Fernseher incl.
    Syncronisation der Ausgabe mit dem Bildwechsel)

- "Pixel horizontal verdoppeln":
     Dadurch wird nur mit der halben horizontalen Aufloesung gearbeitet.
     Um das Hoehen-/Seitenverhaeltnis zu wahren, wird bei der Ausgabe jeder
     Pixel verdoppelt. Damit ist die entstehende Videodatenmenge geringer
     und die Verarbeitung schneller (evtl. fuer leistungsschwache Rechner zu
     empfehlen)

- "Beim Start nicht anzeigen";
     Beim Programmstart fragt da Programm nicht nach dem Modus sondern startet
     mit dem gespeicherten Modus sofort.


Karte:

- man waehlt die Karte aus, damit die Ansteuerung der Audioausgaenge klappt.
  Diese ist naehmlich bei jeder Karte anders.

- Des weiteren werden die AV-Eingaenge manchmal anders angesteuert

- Der Tunertyp ist fuer die Senderabstimmung wichtig (durch eine 
   Behelfsautomatik geht es auch bei falschem Tuner meistens mit kleinen
   Verzoegerungen )

Spezial:

- verschiedene Einstellungen zum Tuning bzw. zur Fehlerbehebung

- "Statuszeile anzeigen": 
     zeigt wichtige Daten in einer Zeile unter dem Bild an

- "Pageflipping verwenden":
     Pageflipping bedeuted Duble-Buffering mit dem sichtbaren Buffer zwecks
     Vermeidung von Schlieren u. ae. bei der Darstellung. Geht nur unter
     bestimmten Umstaenden (nur im Vollbild und wenn der Speicher reicht 
     und ... )
     Bei verschiedenen Karten ist das Pageflipping aber langsam und/oder 
     fehlerhaft (gesehen bei Matrox Mystique).

- "nur 1 Halbbild anzeigen":
     zeigt nur 1 Halbbild an ( = bessere Performance, schlechtere Aufloesung,
     keine Interlace-Effekte)

- "vertikale Skalierung verwenden":
     Unter bestimmten Umstaenden zeigt der Dekoder nur 1 Halbbild an (z. B.
     wenn obiger Menuepunkt aktiv ist) und verwendet dazu den Skaler der
     Grafikkarte. Das ist manchmal fehlerhaft im Grafiktreiber implementiert
     (Matrox Mystique) .
     Das Bild hat dann nur die halbe vertikale Groesze. Nach Ausschalten
     schreibt der Dekoder selbst die Zeilen doppelt ( = langsamer)

- "De-Interlacer benutzen":
     Um die Interlace-Streifen auf dem Monitor zu verringern (bei Videofilmen)
     versucht der Dekoder mit Hilfe eines Vertikalfilter diese zu
     unterdruecken. ( = Bild wird etwas unscharf,etwas langsamer)
     Funktioniert derzeit nur im  YUV-Blit- und Overlay-Modus wenn die
     PAL-Mittelung an ist. Sollte bei Kinofilmen (die sind mit 25 Vollbildern
     aufgezeichnet, statt 50 Halbbildern) aus sein.

- "Volles Bild anzeigen":
     Der Dekoder zeigt normalerweise oben und unten nicht alle Zeilen an 
     (bei Breitwandfilmen die schwarzen Balken oben und unten, sonst 4 Zeilen
     oben und unten). Das beschleunigt das ganze etwas.
     Hiermit kann man trotzdem das volle Bild zu sehen bekommen (incl. 
     PAL-Plus-Zeile).


- "Indexdatei in Speicher lesen"
     wenn eingeschaltet wird das 28 MB grosze IndeFile komplett in den 
     Speicher gelesen und auch alles, was sonst von der Platte gebraucht wird.
      Vorteil: - hoehere Dekodiergeschwindigkeit, kaum noch Platten-
                  aktivitaeten nach einigen Minuten Laufzeit
               - man kann die Platten ueber das Powermanagment abschalten
      Nachteil: Geht nur wenn mind. 64 MB Speicher vorhanden sind,
                  sonst kommt es zu dauernden Festplattenaktivitaeten 




Kommandozeilenparameter des Programms:

  /iname: Name der INI-Datei (default: DEK.INI)

  /fname: Name einer Testbilddatei zum laden angeben (default ist
          "TESTBI.BIN")

  /t:     Testmode, es wird eine Testbilddatei geladen und in einer
          Endlosschleife laufen gelassen. Die WinTV-Karte wird
          nicht initialisiert und braucht auch nicht im Rechner stecken.
          im Testmode wird die gemessene Framrate auf die Konsole aus-
          gegeben.

  /v:     Vebose-Mode (diverse Testausgaben auf die Konsole)

  /hxxx:  horizontale Pixelzahl (Wertebereich 350..800) 
          Default: - 768 bei normalen Modi
                   - 704 bei Videoausgabe (richtig zum Fernsehen mit der 
                         ELSA-Winner 2000-Office)

          gibt die Anzahl der Pixel, wie sie von der WinTV kommen an
          (ist entscheidend fuer die Geschwindigkeit - weniger Pixel
          ist schneller)
          INI-Eintrag: h_pixels

  /2      Anzahl Pixel bei Ausgabe verdoppeln (zur Wahrung des Hoehen-/Seiten-
          verhaeltnisses bei wenig Pixeln. Wird keine Pixelzahl vorgegeben,
          dann wird die default-Pixelzahl halbiert
          Default: aus

Einige Parameter koennen auch in der INI-Datei angegeben werden, Vorrang haben
aber die Kommandozeilenparameter.

Die Bedienung erfolgt ueber Hotkeys wie folgt:

Ausgabemodi:
'X'       Farbausgabe mit MMX-Routinen (default bei MMX)
'C'       Farbausgabe ohne MMX (default ohne MMX)
'M'       Monochrome Ausgabe ohne MMX-Benutzung (ohne MMX schneller)
'T'       Testausgabe-Modus (Es wird nichts in den Bildspeicher geschrieben)

Einstellungen fuer Dekodierung:
'A'       Automatik fuer Dekodierung einschalten (erkennt anhand der Daten
          in Bildaustastluecke ob verschluesselt gesendet wird oder
          unverschluesselt)
          Defaulteinstellung
'E'       schaltet zwischen entschluesselter und unentschluesselter
          Darstellung um. Gleichzeitig wird die Automatik ausgeschalten
'B'       Zeigt Bildaustastluecke an (Entschluesselung wird abgeschalten)
          Nochmaliges druecken: Normale Darstellung

Testbilddaten:
'R'       liest die Testbild-Datei ein und stellt sie in Endlosschleife
          dar mit Messung der Framerate
'W'       schreibt die aktuellen Videodaten in die Datei "TESTBI.BIN".
          Die Datei beinhaltet 10 Vollbilder (0.4 s) in der Form wie sie
          von der WinTV-Karte kommen und ist ca. 9 MB grosz.

Kanaleinstellung:
'+' und '-' auf Nummernblock

sonstige Funktionen:
'I'       Bild auf volles Bild zoomen (bei Desktopausgabe) und wieder
          Normalgroesze bei nochmaligen druecken
'S'       Bildausgabe stoppen (Standbild), nochmal druecken zum laufen
          lassen
'N'       Neues Bild im Standbildmodus
'V'       Verbose-Modus ein-/ausschalten (diverse Testausgaben auf die
          Konsole)
'K'       Taktzaehlung fuer jedes Vollbild ausgeben
'1'       nur 1 Halbbild dekodieren
'F'       Volles Bildschirm darstellen
ESC       Programm beenden bzw. Einstellungsfenster schlieszen

Performance-Probleme:

Das Programm verlangt sehr viel Rechenleistung, weshalb man alle Rechenzeit-
intensiven Prgramme beenden bzw. stoppen sollte:
  - DOS-Boxen schlafen lassen durch Druecken der PAUSE-Taste
  - Windows-Programme beenden, wenn sie sich als Rechenzeit-Verschwender
    ausweisen (Acrobat-Reader ist z. B. ein solches).
Bei ausreichender Rechenleistung ist das aber selten noetig, da das Programm
seine Prioritaet entsprechend hoeher setzt.

Die Rechenzeitverschwender lassen sich durch die max. Framerate erkennen.

Die Framerate wird in der Statuszeile angezeigt. Diese ist aus der mittleren
Zeit hochgerechnet, was erklaert, wieso mehr als 25 Frames/s moeglich sind.
Der Wert "fehlende Frames" gibt an, wieviel Frames waehrend der Anzeige
von 50 Frames nicht verarbeitet werden konnten (Ideal: 0).

Soweit das System nicht instabil wird alle Setup-Parameter, die mit
Speichergeschwindigkeit zu tun haben auf "besonders schnell" stellen.

Zur Optimierung am besten wie folgt vorgehen:
1. Statuszeile einschalten
2. einen unverschluesselten Sender einstellen
3. alle funktionierenden Modi durchtesten, sehen, ob das Bild OK ist
    und Framerate merken
4. Besten Modus waehlen
5. evtl. mal mit ausgeschaltetem Pageflipping probieren, das brint manchmal
   ungeahnte Beschleunigungen (die Verzerrungen stoeren meist nicht so)

Achtung: bei hohen Grafikaufloesungen und Farbtiefen auf dem Desktop ist
  die Ausgabe auf dem Desktop meist langsamer als im Vollbild. Das liegt
  daran, dasz zur Bildausgabe auf den Monitor wesentlich mehr Daten bewegt
  werden, womit fuer das schreiben der Videodaten durch Prozessor und Grafik-
  chip mehr Zeit benoetigt wird.


Nicht-MMX-Prozessoren werden derzeit nicht unterstuetzt !

Da die Ausgaben im Verbose-Modus auch ziemlich viel Zeit brauchen,
sollten sie default aus sein !

Sonstige Probleme:

Tuner:
Falls die Sendereinstellung nicht funktioniert ist der Tunertyp falsch
eingestellt (INI). Aeltere WinTV-Karten und Miro-PCTV haben einen 
Temic-Tuner neuere WinTV-Karten haben einen Philips-Tuner.
Evtl. gibt es auch Karten mit noch unbekannten Tuner.

Kartentreiber:
Das Programm benutzt einen eigenen Treiber, zur Ansprache des Bt848-Chips.
Der Kartentreiber wird nicht benoetigt kann aber installiert sein.
Ist der Kartentreiber installiert darf man Ihn aber nicht disablen 
(das Problem habe ich noch nicht genauer untersucht) !
Evtl. musz man den Kartentreiber unter Windows 98 installieren, da
die Karte sonst keinen Interrupt abbekommt ! Die BIOS-Setup-Einstellung
"Plug&Play OS installed = no" oder so aehnlich sollte das selbe bewirken.


Testmode:
Beim Testmode werden 20 Frames roher Bilddaten mit den normalen
Routinen dekodiert und angezeigt, so wie es im laufenden Betrieb auch
passiert. Damit ist eine brauchbare Performance-Messung moeglich.

Im Testmodus ("/t" in der Kommandozeile) wird die WinTV-Karte nicht
initialisiert. Wenn man dagegen 'R' im laufenden Programm drueckt ist die
WinTV-Karte initialisiert und liest weiter die Videodaten in den
Hauptspeicher, was unterschiedliche Frameraten erklaert.

Falls irgendwas nicht funktioniert erstmal Testmode benutzen,
das zeigt, ob Direct-Draw und das Programm an sich laeuft.
Dann einen unverschluesselten Kanal ansehen. Geht das nicht,
liegt wohl irgendein Problem mit der WinTV-Karte vor
(IRQ und Memory der WinTV mit den Werten in der Systemsteuerung
vergleichen !)
Evtl. macht ein gesharter IRQ Probleme (Probleme mit Riva-TNT Chips sind
bekannt).

Ansonsten bitte Konsolenausgaben des Programms
in Datei umleiten und mir geben (Verbose-Mode einschalten) !

Falls im Normal-Modus nur die Meldung "kein Speicher" kommt,
hat der Treiber nicht genuegend nonpaged Speicher vom Kernel
bekommen (3*900K). Da der Kernel-Heap vom Win95 offensichtlich
keine Garbage-Collection macht, hilft dann meist nur booten !
Eine bessere Loesung ist mir noch nicht eingefallen.

Von der CPU wird erwartet, dasz sie den CPUID-Befehl kennt und
einen Timestamp-Counter besitzt !

Falls die Entschluessel-Automatik nicht richtig arbeitet (schlechtes
Signal oder anderes Programm) mit 'E' im Handbetrieb schalten !

Aufzeichnungen des verschluesselten Signals auf dem Videorekorder
werden nur sehr schlecht oder gar nicht dekodiert !


Datei KEY.TXT:

Enthalet den eigentlichen Schluessel. Es koennen auch die Dateien aus dem
Internet genommen werden. Das Ergebnis ist identisch, nur die Indexdateien
werden neu erzeugt.


Videoausgabe mit ELSA-Winner 2000/Office:

Das Programm behherscht auch die Videoausgabe auf der ELSA-Winner 2000/OFfice
inclusive notwendiger Syncronisation um das dekodierte Signal auf den
Fernseher oder Videorecorder zu bekommen. Dazu wird der Video-Out-Teil des
Permedia-2-Chips und die Philips-IC's SAA7125 und SAA7111 entsprechend
programmiert. Dies erfolgt direkt, da kein brauchbares Treiberinterface zur
Verfuegung steht. Die Programmierung des Permedia2 wurde nur durch 
Probieren herausbekommen (keine Doku), so dasz unerwartete Probleme nicht
auszuschlieszen sind.

Aus dem oben gesagten ergibt sich:
- Video-Out-Treiber der ELSA-Karte sollten nicht installiert sein
  (meist gehts aber auch mit)
- die Syncronisierung erfolgt ueber 3 Videobuffer, da die direkte
  Syncronisierung des Video-Out nicht moeglich ist. Das ist sehr
  Videospeicherintensiv, das Programm warnt wenn es nicht 3 Videobuffer 
  bekommen hat, laeuft aber trotzdem. In diesem Fall ist diverses Flackern
  und Zittern des Fernseh-Bildes moeglich.
  Bei 4 MB Bildspeicher reicht es gerade, fuer den Bildschirmmodus
  1024*768 in Hicolor und 3 Videobuffer.
- Wer hat eine Doku vom Chip Permedia-2 (Hersteller: 3DLabs) ?

Da die Vide-Ausgabe im Huntergrund erfolgt kann das Videofenster auf dem
Desktop auch minimiert werden.

In der Sektion [Permedia2] lassen sich diverse Parameter zur Videoausgabe
einstellen.
