<html>
  <head>
    <title>Blinker</title>
  </head>
  <body>
    <h1>Blinker</h1>
    <p>
      Blinker is a server for LED projects and Blinken-houses that are driven
      by Blinkenlights network streams.
    </p>
    <h2>Overview</h2>
    <p>
      Blinker is based on different modules, which can be connected via
      streams.
      Several types of modules are available, for example a movie player,
      a network stream sender, modules to mix and separate streams.
    </p>
    <h2>Getting Started</h2>
    <p>
      As Blinker uses BlinkenLib to perform the low-level operations
      on Blinken movies and Blinken streams, BlinkenLib has to be
      installed first.
    </p>
    <p>
      Go to the <code>src</code> directory and type <code>make</code>.
      This should compile Blinker and produce a binary <code>Blinker</code>
      in this directory.
    </p>
    <p>
      Start Blinker using the example configuration directory using
      <code>./Blinker ../example_cfg</code>.
      You should see a small test movie appearing on standard output
      (printed there by a printer module).
      Other movies are sent as MCUF streams over UDPv4, one stream
      is sent to <code>127.0.0.1:2323</code>.
    </p>
    <h2>Streams</h2>
    <p>
      Every stream is identified by a name and works like a TV program.
      A source creates the content and uses the stream to distribute
      it to its receivers.
      A single stream can have any number of receivers, they all receive the
      same content.
      Usually, there should be only one provider of content for a single
      stream.
      If multiple parties send video frames to the stream, the frames
      are mixed, which is most likely not what you want.
    </p>
    <h2>Operator Connections</h2>
    <p>
      Some modules can react to events and/or send events to other modules.