» RAUM Media Container / libraum

⊙   [Home] [Comparison] [Contact] [RoarAudio]   ⊙


 

Overview:

RAUM is a free multimedia container format. It is based on RoarAudio's protocol but is independed on any RoarAudio software (it just integrates very well). RAUM supports to store data in many codecs including (Ogg) Vorbis, Speex, CELT, FLAC and PCM. As RAUM uses the same IDs for codecs as the RoarAudio project uses the exact list is maintained by the RoarAudio project.

The container supports container based meta data. Padding is supported for fast meta data updates. Meta data can be updated or changed in mid of a stream without restarting the stream (Unlike in Ogg). An End-Of-File mark is used to ensure no tailing garbage is read. This enables use of RAUM directly on fixed-size media like CDs and DVDs. Seek tables enable fast seeking and reading of meta data: Seek tabkes can point to meta data and special positions as well as to positions in data.

The RAUM container is fully streamable. This includes file based streaming (like using HTTP as transport) and live broadcasting. It is possible to stream seek tables as well. For live broadcasting only minimal amount of stream alternating needs to be done, in a similar way as it is needed for Ogg (where header pages needs to be send to the client before the actual live data).

Streams within the container can optinally use DTX (Discontinuous Transmission) to save bandwidth or file size. There is also a mode for codecs including framing information directly to use the RAUM container only as some kind of speicial header to save disk space. Those streams are called execed streams.

It is possible to have up to 65535 (216-1) streams running in parallel and any number of streams chained. There is no maximum file size or limit on the size of a single stream.

How does it work?

The container consists of a file magic at the begin of the file. This initial magic is followed by any number of so called Requests (short: req). Thos requests are some kind of frames to store meta data and data. Each request has a type called Command. The command tells what the request is about. Examples for such a command are meta data updates or data requests. The request also contains some more header information like the size of the data part and the stream it is working ok.

Finnaly the requests are followed by a request to mark the end of file (called QUIT or EOF mark) or a so called exec request. The exec request tells that a stream is still open and the data for the stream follows raw.

The data itself is organized in so called streams. A stream is a logical unit of data with given parameters. Normally this directly mapps to songs or titles. A common RAUM file consists only of a single stream. Live broadcasting will normally contain of a set of chained streams. Each stream can have independed Meta data as well as the file can have meta data common to all streams.

Examples for RAUM files

A very simple example of a RAUM file:

Magic New stream (#0) Data (for #0) Data (for #0) End of stream (#0) EOF

A very simple example of a RAUM file using execing:

Magic New stream (#0) Data (for #0) Data (for #0) Exec of stream (#0) More data (for #0) till end...

A simple example of a chained RAUM file:

Magic New stream (#0) Data (for #0) Data (for #0) End of stream (#0) New stream (#1) Data (for #1) Data (for #1) End of stream (#1) EOF

A simple example of a interleved RAUM file:

Magic New stream (#0) New stream (#1) Data (for #0) Data (for #1) Data (for #0) Data (for #1) End of stream (#1) End of stream (#0) EOF

A simple example of a RAUM file with meta data:

Magic Meta Title=MySong (global) Meta finalize (global) New stream (#0) Meta Artist=MyArtist (for #0) Meta finalize (for #0) Data (for #0) Data (for #0) End of stream (#0) EOF

 

 


Powered by Fellig.org, Vim and Freedom.