Version history
===============
Version 1.02  - 20030813    Additional buffering added
                            LNB1 settings used for DiSEqC 1.2
                            Only valid PIDs are recorded
Version 1.01t - 20030810    Added priority mechanism which increases
                            reliability dramatically
Version 1.00t - 20030809    Early test release




For the last update or for more information visit the author at
   www.majority.nl
Author: 
  Marcel Majoor
E-mail:
  m.majoor@majority.nl



This is the README file for the TechnoTrend PC-line budget driver (also
known as WinTV NOVA) for WinSTB.

Contents of this package:
  Drivers\SAA7146A.SYS     Driver for DVB-S card
  Drivers\SAA7146A.INF     Install file for driver
  TTPCLINEBUDGET.DLL       Driver support for WinSTB
  README.TXT               This file
  INTERVIDEO.GRF           Sample graphics filter file using InterVideo decoder
  CYBERLINK.GRF            Sample graphics filter file using CyberLink decoder


Feautures:
. Supports the remote control as supplied with some cards (supports every RC5
  remote control)
. DiSEqC control (also supports positioner control but has not been fully tested)
. Signal level quality indication (indication only)
. Supports recording of the transport stream (.ts) (use PVAStrumento to
  convert it to an audio/video stream for further processing)
. EPG supported
. SoftCSA supported

Known issues (NOT necessarily related to the driver!):
. On some channels (eg. data channels) WinSTB (the application) 
  stops with an error.
  This is because of an error of the audio filter.
  This happens when using the CyberLink ausio decoder (as in
  CYBERLINK.GRF) This does NOT happen with the InterVideo audio
  decoder (as used in INTERVIDEO.GRF).
. When using remote control some commands are not handled properly
  (by application ?), especially Red/Green/Blue/EPG commands.
  This is an application 'problem'. Adding <ProcessMessages>
  in the driver changes the behaviuour.... (no <ProcessMessages>
  in the driver added though).


To make WinSTB work with this card the following has to be done:
1. Install the driver as supplied in the 
   WinSTB_directory\DRIVERS\TTPCLINEBUDGET\DRIVER subdirectory.
   Most likely there is already another driver for the card, so this one
   has to be replaced by the new one ('update' the original driver).
   The SAA7146A.SYS driver works for Windows 98/W2000/XP systems and
   identifies itself as 'SAA7146A generic driver'.
2. Make sure the TTPCLINEBUDGET.DLL file is located in the following
   directory:
   WinSTB_directory\DRIVERS\TTPCLINEBUDGET\
3. Change the driver selection of WinSTB by editing the 'settings.ini' file
   to:
   [Hardware]
   DVBType=TTPClineBudget

   Note: DON'T use the hardware setup utility build-in WinSTB to change
         the DVB hardware because the application has no knowledge of
         the existence of the driver and hence will not display the
         driver option. This might change in future releases of WinSTB.
4. Make sure the WINSTB.GRF is 'operable'. 
   First make sure that the file 'usrc.ax' has been registered using 'register.bat'.
   The default supplied WINSTB.GRF with WinSTB typically needs a decoder 
   attached to it to get a picture and sound.
   The two sample GRF files in this package can be used if either an InterVideo
   decoder is installed or a CyberLink decoder. Copy them to the WinSTB directory
   with the name 'WINSTB.GRF' to have WinSTB use it.
   You can always make your own GRF file, but you need Microsofts GraphEdit to
   do this.


The TTPClineBudget driver uses some (additional) settings
from 'settings.ini'.



REMOTE CONTROL
==============
The driver supports any RC5 type infrared remote control
using the supplied infrared receiver of the card (it is assumed
the DVB-S card has been supplied with both a receiver and an
infrared control here).
Only limitation is that only the standard RC5 protocol is supported
and not the extended protocol (this is a limitation of the hardware
on the card, and not of the driver).

[Remote]   This is the settings section which the driver uses for the remote control
Device=?   Identifies the device type (0..31)
           Use '0' (TV) here for the original supplied remote control
Key?=?     Where the first '?' stands for the command code (0..63) and the second
           '?' for the command (text) send to the application.

Below is a sample of the [Remote] section which can be used with the original
remote.
FYI: The layout/codes generated by the original remote are
       TV         CH+         RADIO         -->  15  32  12
      VOL-    FULL SCREEN     VOL+          -->  17  46  16
      MUTE        CH-         SOURCE        -->  13  33  34
        1          2            3           -->  1   2   3
        4          5            6           -->  4   5   6
        7          8            9           -->  7   8   9
     RESERVED      0         MINIMIZE       -->  30  0   38

[Remote]
Device=0
Key0=0
Key1=1
Key2=2
Key3=3
Key4=4
Key5=5
Key6=6
Key7=7
Key8=8
Key9=9
Key12=Radio
Key13=Mute
Key14=RCL
Key15=TV
Key16=Right
Key17=Left
Key30=Menu
Key32=Up
Key33=Down
Key38=Power
Key43=Red
Key44=Green
Key45=Yellow
Key46=Blue
Key47=White



DEBUG
=====
The driver has a debug screen which can be enabled by adding the following line
in the [DEBUG] section:

[DEBUG]
TTPClineBudgetForm=Yes

The debug screen of the driver can also be used to control DiSEqC devices. This
is handy if one wants to setup the positions of satellites for a positioner or
want to have some manual control.

Notes on some of the debug items:
PIDs box:               These are the currently active PIDs (as set for the active channel)
Debug/ Packet buffers:  The number of buffers received. A single buffer consists of 512 packets
                        of 188 bytes each (about 100Kb).
Debug/ ms/buffer:       Time spacing in ms for each packet buffer arriving.
Debug/ Overtaken:       Indicates that data would have been lost if no additional buffering was
                        available. This value is incremented everytime the driver already has
                        data available before previous data has been processed. Typically we 
                        should have to wait before data becomes available.
                        Versions before V1.02 did not have any additional buffering so this would have
                        indicated data loss. V1.02 has additional buffering so this is typically
                        not a problem.
Debug/ RC5:             Shows the last received remote control code (+ repeat indication and
                        command as send to application). 'RC5 0 43' means 'device 0', '
                        command 43'.
Debug/ Filter calls:    Number of single packets send to the different filters.
Debug/ Filters defined: Displays the number of filters and the PID identications for 
                        these filters. These are typically the same as the PIDs in
                        the PIDs box with some additions (eg. EPG).
Debug/ Debug:           Miscellaneous


DISEQC
======
The driver itself also supports DiSEqC 1.2, meaning that it can control a positioner
using satellite positions (instead of using DiSEqC 1.0 which only supports
a positioner with 4 positions).
For this the [DiSEqC] section is used.

[DiSEqC]
DiSEqCType=1.2         Set this to 1.2 for positioner control
LNB?Source=?           The driver uses the number in LNB?Source for the
                       satellite selection.
Example:
LNB56Source=E19.2S Astra 1B,1C,1E,1F,1G,1H    will send position '56' to the positioner.

Note: Although the driver supports this, the application may not allow for it.
      This is an untested feature.
      For the type of LNB the settings for LNB1 are used.

When using DiSEqC devices which are cascaded the DiSEqC commands need to be repeated
so the commands are passed on properly. If two DiSEqC devices are cascaded the
repeat is typically set to '1'. For three cascaded devices the repeats should be set
to '2', etc. The following setting makes the number of repeats variable:

[DiSEqC]
RepeatCommand=1        Sets repeats to '1' (default)



Additional settings used:
=========================
[Hardware]
ThreadPriority=        The priority used for processing the data
                       Valid values are 'Normal', 'Default', 'High', 'Highest, 'Realtime'
                       The default setting used is 'High' (same as 'Default')
                       Note: For time critical operations set this to 'Realtime'
                       Note for version >= V1.02: Because of the additional buffering
                       this is not as critical anymore.


