Version history
===============
version 1.04  - 20030820    Support for multiple instances of WinSTB (watching/
                            recording multiple programs of the same provider).
                            'DisplayDuringRecording' setting now locally handled
Version 1.03  - 20030819    Added lower possible thread
                            priorities (mainly for testing buffering).
                            Option to select the streams to use for recording.
                            DiSEqC 1.2 issues a 'stop movement' at initialization.
                            Video rate indication.
                            External software common scramble algorithm DLL 
                            no longer supported (this is now handled internally).
                            The internal handler corrects some 'hickups' appearing
                            in some programs when using the external DLL.
Version 1.02t - 20030813    Additional buffering added (appr. 0.4s buffering available).
                            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, WinTV-NOVA-CI-s model 546) 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)
  Note: PVAStrumento only supports streams with both audio and video,
        so recordings from radio (with audio only) can not be converted with PVAStrumento!
. EPG supported
. Software common scrambling algorithm supported: Versions prior to version V1.03 
  require external handler (DLL) for this to work.
  V1.03 no longer requires an external handler for this.


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 audio 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 seems to change the behaviour.... (no <ProcessMessages>
  have been added in the driver 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. Install DirectX 9 if it has not already been installed on your system.
5. 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 (see 'known issues' for using the
   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 information items:
PIDs box:               These are the currently active PIDs (as set for the active channel)
Packet buffers:         The number of buffers received. A single buffer consists of 512
                        packets of 188 bytes each (about 100Kb).
ms/buffer:              Time spacing in ms for each packet buffer arriving.
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. V1.02 has 20 buffers available
                        which adds up to a buffering time of about 0.4 seconds.
RC5:                    Shows the last received remote control code (+ repeat indication 
                        and command as send to application). 'RC5 0 43' means 'device 0', '
                        command 43'.
Filter calls:           Number of single packets send to the different filters.
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).
Estimated video rate:   Shows an approximation of the bitrate of the current video stream.
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.
                       V1.03 also supports 'Low' and 'Lowest for lowering the priority.
                       Use these for testing the buffering capability of the system (you
                       should see an increase of the 'Overtaken' counter if the debug
                       screen of the driver is shown.

[Recording]
IncludeInTSRecording=  The stream types to be included in the recording are given here.
                       The indicated streams are only recorded if they are 'activated'
                       by the application!
                       Example:
                         IncludeInTSRecording=audio,video,pmt,pcr
                       This, by the way, is the default; all the major streams belonging 
                       to the current program are recorded.
                       The streams which can be included are:
                         audio, video, pmt, pcr, ecm, sid, ac3, teletext
                       Note: You typically need at least 'audio,video,pmt' if you use
                             PvaStrumento to convert the stream. 
                       Note: Some plugins can remove certain streams from being processed.
                             If this is the case then these are not recorded!


[Debug]
TTPClineBudgetSlave=   Version V1.04 supports a slave mechanism, so multiple instances of
                       WinSTB (eg. it has been started multiple times) are supported. This
                       allows the simultaneous watching or recording of different programs,
                       although they must be from the same provider.
                       If this settings is set to 'Yes' it will act as a slave if there is
                       already an instance of WinSTB running. If set to 'No' then it will
                       always act as a master. Note that two instance both acting as master
                       will result in spurioud behaviour.
                       If the first instance of WinSTB is started it will act as a master.
                       When a second instance (or third or fourth..) is started it will be
                       set as a slave. The slaves have no control over the hardware.
                       Beware that the master must be closed as the last one. If it is closed
                       before the slaves are closed errors might be reported.
                       Requirement for successful recordings:
                         'ThreadPriority=Realtime'
                       Advice:
                         . Use different copies of WinSTB for each program. This way the settings
                           are also retained correctly. Otherwise you most likely will get
                           runtime errors....
                         . You might set one of the instances as being a fixed master
                           (TTPClineBudgetSlave=No) so hardware is always guaranteed to be
                           correctly initialized. Always start with that instance and then 
                           start the others.
                       Note: Since the audio is shared when watching multiple programs you have
                             to mute the other programs to isolate the audio for a particular
                             program.