FmInputGst

Reads audio from a GStreamer pipeline.

Element info

Inherits from FmInput?
Input ports (none)
Output ports 1
Depends on other elements (none)
Depends on external libraries gstreamer-0.10 gstreamer-plugins-base-0.10
Available on platforms Linux, OS X, Win32

Status

Works under most conditions.

Technical description

The FmInputGst element is one of the most important elements available to the fm_server, as it's the only input element able to read audio files. It uses the GStreamer framework (0.10 release series) to decode and convert input files to the internal audio representation of the fm_server.

It has a complex buffering structure that allows the pipeline thread to read audio data without use of locking, while GStreamer itself can't mantain these realtime requirements. It safely handles seeking requests and tries to honor them with the minimun possible latency.

This highly complex element is divided into three parts:

FmInputGst
the main part, which implements the standard FmElement interface, and the parts of it which works in the pipeline thread.
GstFmSink?
a statically-linked GstElement which acts as a sink for the GStreamer pipeline. It handles audio data to FmInputGst using several ringbuffers and performs seeking requests.
FmInputGstCommon?
a small data structure which contains data shared between FmInputGst and GstFmSink?. It offers the implementation of FmChunk?.

Source

Directory: /fm_server/trunk/src/fm_input_gst