The entire playout system has designed to be modular. At the moment, the
following modules exist:

MySQL Database
    Front End - Administration
    Switch Control Daemon
    Text Service
    MPEG Service
        MPEG Service monitor

Each of the modules can run on seperate computers if desired. The MySQL
database can be accessed using PHP, the MySQL C API and via OBDC. Therefore,
the most sensible way for a module to discover what it is supposed to be
doing is to query the MySQL database itself. - All of the system clocks will
be syncronised via a time server. This method has the advantage of ensuring
that modules are only dependent on other modules that are further up the
hierachy than themselves.


Outline of services that each module should provide:

Front End. - As discussed and agreed previously

Switch Control Daemon. - Query the scheduling database and ensure that the
correct channel is routed onto the UHF network.

Text Service. - Query the scheduling database to determine what is currenly
live. - If it is the text service, show text slides. - Before (0.5 seconds)
something else due to go live, go to black to avoid rolling. 5 seconds after
something else has gone live, show transmitter apology. Before (0.5 seconds)
text service due to return, go to black to avoid rolling.

MPEG Service. - Query the scheduling database to determine the next MPEG to
play, load it into memory, play it. Be able to play MPEG files
"back-to-back"

The MPEG Service monitor. - Occasionally ping the MPEG Service to check that
it is still alive. If it receives no reply it will be able to restart the
machine on which the MPEG Service is running.


Modules are required to query the database at least every 30 seconds to
check for changes.


QUESTION: Will text services be scheduled? If not, we will need a length
field in the schedule table so that we can determine when MPEGS, Live
Broadcasts, etc have finished.


MPEG file format:
The MPEG service will use exact copies of programmes from the archive.
Therefore, these will contain 15 seconds of colour bars and 1K tone,
followed by 15 seconds of clock. If possible (an MPEG is not already being
played), the MPEG Service should start playing the MPEG 30 seconds in
advance of the schedule time so that the beginnging of the programme
coincides with the beginning of the transmission. This will allow us to
predict entries into ad / music video breaks from live broadcasts easily. -
We will be able to patch the MPEG video into the gallery and do a countdown,
etc. If MPEGs are being played "back-to-back" then the Service should jump
into the file at the correct place. - There is little need for clocks, etc
in this case anyway.