Low-level view

Components

The basic building block in the Flumotion architecture is called a component. A component implements the basic unit of functionality abstraction from the point of view of a user of the server.

There are two large groups of components: feed components, and other components.

The feed components are layed out in a flow. A flow is just a collection of connected feed components. Components can only be part of one flow.

The other components are part of the atmosphere. They provide additional functionality to flows and the manager.

One component is directly started from the manager: a bouncer managing the authentication for workers and components connecting to the manager.

Feed Components

Feed components handle the flow of stream data in the flow. There are three types of feed components.

Producer

A producer only produces stream data. The stream data can be produced from an actual hardware device (webcam, FireWire camera, soundcard), by reading it from a file, by generating it in software (test signals), or by importing external streams from both Flumotion servers and other servers.

The data stream a producer produces is called a feed. A feed can be raw or cooked, depending on whether the data being produced is in a raw or encoded format. A feed can be simple or aggregated (for example, both audio and video).

Converter

A converter converts stream data. It can encode or decode a feed. It can combine feeds or feed components to make a new feed. It can change the feed by changing the content, overlaying images over video streams, compressing the sound, ...

Consumer

A consumer only consumes stream data. It can stream a feed to the network, opening it up to the outside world. It can capture a feed to disk.

Other Components

Some components are not directly involved in creating and processing of the data stream. They provide additional functionality related to the streaming process.

Bouncer

A bouncer implements authentication mechanisms. It will get authentication requests from the manager and verify if the requested action is allowed. A bouncer could be implemented using a standard passwd file, an LDAP username/password backend, or any other mechanism.

Tester

A tester can start up a set of stream clients using different profiles. This is useful for stress-testing the server and verifying it works correctly. Testers can just get the stream data, or validate it in various ways. They can check if the actual data makes sense, if it's in the right format, and so on.