This is a Push Source filter with Script control for DirectShow.
It is intended in combination with the 'Universal SAA7146A' and/or
'Universal FlexCop' driver.

This filter has a built-in mechanism for pushing the data as received
from a SAA7146A or FLEXCOP (B2C2) based DVB card.


In addition to the receiving of this data, it supports using a script based
language (used for setting up the DVB card, like tuning to a channel).


What is the use of this filter?
It's primary use is 'demonstration' and 'debug'. With this filter it
is possible to get DVB reception from within GraphEdit (without any external
control).


Suggested method for using the filter under GraphEdit
(note: it is assumed the required filters are available and registered on the system):
1.  Load the 'Major Script Push Source' filter
2.  Load the 'Elecard MPEG Push Demultiplexer' filter
    The reason for using this filter and not the standard MPEG2 Demultiplexer is
    because this filter can detect video and audio PIDs automatically.
3.  Connect the two filters
4.  Open the property page of the 'Major Script Push Source' filter
5.  Press 'Load script', select the 'Tuner1.pico' script (important: it is assumed
    this script has been setup correct -> the include file for the required card
    should be set and the 'TransponderDefinitions', for selecting the satellite,
    should be set correctly). You can use 'Tuner3.pico' for a FlexCop (B2C2/SkyStar2)
    card.
6.  Initialise the cards hardware using the script
    (enter 'CardInit' on the input field and press 'Execute script line')
    Since this function does not return a result nothing will be indicated that
    something went wrong (or was executed correctly).
    Note: This initialization is typically only required once
7.  Tune to a transponder using the script
    (enter 'TransponderSet 0 "H" 27500 12188000 "0192"' for instance on the input
    field and press 'Execute script line'). This should give a '-1' result (which
    indicates 'OK'; a value '0' indicates an error).
8.  Enable the acquiring of data for the card using the script
    Enter 'BufferingSetup 10' on the input field and press 'Execute script line'.
    This should return 3 values, of which the right value should be -1 (OK), the
    2nd value is the value of '10' but in hexadecimal.
9.  At this point the card is acquiring data from the tuned transponder.
    We now want the filter to get this data and pass it on to it's output pin.
    Select the correct chipset (e.g. 'SAA7146A') and the correct card (typically '0').
    The press the 'Set chipset/card to use' button.
    Note: The reason no data appears on the output pin at this stage, is because the
    graph is still in it's stop state.
10. Press the 'play' button, so the graph is started.
    Data is now being placed on the output pin (information on the property page
    shows some information about this).
    On the 'Elecard MPEG Push Demultiplexer' filter new output pins should appear.
11. Stop the graph (otherwise we will not be able to continu).
    Select a 'video' and 'audio' pin from 'Elecard MPEG Push Demultiplexer' with the
    same 'Prog#' and render these pins.
12. Play the graph. Assuming it is a FTA channel, you should see the video and hear
    the audio.

Hint: At (11), before rendering, you might add the 'Video Mixing Renderer 9' to the graph.
      You can then render a second video pin (which will attach itself to a second input
      of the 'Video Mixing Renderer 9'.
      Using the property page of the 'Video Mixing Renderer 9', you can select the second
      input (under Filter Config select 'Pin: VMR Input 1' and change the Size to X=0.5 and
      Y=0.5. You should see a Picture In Picture now of both the video inputs.
      You can at more video inputs if you want.



Important:
The script is an -individual- part, and has no knowledge about the DirectShow filter.
The same applies to the DirectShow filter; it does not know about the script.

Although there is also the option to select a file as 'chipset', be aware of the following
issues:
. play/stop of the graph does -not- do anything with the file itself. When a file is
  selected it is opened at the start of the file. Any play/stop of the graph will continue
  were the file was 'interrupted'.
. there are some issues playing/stopping the graph with a file if it is not played to the end
. the actual file opening and closing is only handled when the graph is 'running' (the same
  actually applies to the SAA7146A and FLEXCOP part).


Requires DSPACK from www.progdigy.com (see DSPACK subdirectory)
Note that when compiled with V2.3.4 an error migth occur when
the graph is stopped. The included DSPACK files don't have this
problem and are of a more recent CVS version.
The only addition to this CVS code is a single line in BaseClass.pas:
     IInterface = IUnknown;


Version history
20060205:  V1.00  - Initial release