tizonia
: A command-line cloud music player and audio streaming client/server.- A fully-featured OpenMAX IL 1.2 multimedia framework
- Tizonia's OpenMAX IL 1.2 plugins
- Skema: Tizonia's test execution framework for OpenMAX IL components.
tizonia
is a command-line application that can:
- Stream playlists from Spotify (Spotify Premium required).
- Search and stream audio from Google Play Music (free and paid tiers).
- Search and stream audio from YouTube.
- Search and stream audio from SoundCloud.
- Search and stream Internet radio stations from the TuneIn directory.
- Search and stream audio from Plex servers.
- Cast cloud music to your Chromecast devices.
- Playback of local media files (mp3, mp2, mpa, m2a, aac, ogg/vorbis, opus, wav, aiff, and flac).
- Act as an Icecast/SHOUTcast LAN server (mp3) (experimental).
- Stream Icecast/SHOUTcast radio stations as a client (mp3, aac, and opus).
- Be used as daemon or as an interactive command-line application.
- Be remote-controlled via its MPRIS D-BUS v2 media player remote control interface (basic playback controls only).
Tizonia is the first open-source implementation of OpenMAX IL 1.2.
Tizonia contains its own OpenMAX IL-based multimedia framework, therefore no gstreamer, libav, or ffmpeg dependencies are required.
The OpenMAX IL Core is the central piece defined by the OpenMAX IL Standard.
- A C library for discovery and dynamic loading of OpenMAX IL 1.2 plugins.
- It has support for all of the OMX IL 1.2 standard Core APIs, including OMX_SetupTunnel and OMX_TeardownTunnel.
libtizonia
is the name of the library that contains the plugin construction
framework. This library provides all the features required to implement OpenMAX
IL 1.2 plugins.
- A C library for creating OpenMAX IL 1.2 plugins (encoders, decoders, parsers, sinks, etc, for audio/video/other).
- Full support for OpenMAX IL 1.2 Base and Interop profiles, as required by the OpenMAX IL 1.2 standard.
A C library with wrappers and utilities for:
- memory allocation,
- threading and synchronization primitives,
- evented I/O (via libev)
- FIFO and priority queues,
- dynamic arrays,
- associative arrays,
- small object allocation,
- config file parsing,
- HTTP parser,
- uuids,
- etc..
The Resource Management framework is another core piece that is specified in the OpenMAX IL standard.
- 'tizrmd' : a D-Bus-based Resource Manager (RM) daemon server.
- 'libtizrmproxy' : a C client library to interface with the RM server.
There is a large list of OpenMAX IL plugins that implement all the audio and multimedia functions used by Tizonia. Here is a (incomplete) list:
- Spotify streaming service client (libspotify),
- Google Play Music streaming service client (based on gmusicapi),
- YouTube audio streaming service client (based on pafy),
- SoundCloud streaming service client (based on soundcloud-python),
- Dirble internet radio station directory (Dirble REST API + libcurl)
- Plex server client (based on plexapi),
- Chromecast renderer (based on pychromecast),
- mp3 decoders (libmad and libmpg123),
- mpeg audio (mp2) decoder (libmpg123),
- Sampled sound formats decoder (various pcm formats, including wav, etc, based on libsndfile)
- AAC decoder (libfaad),
- OPUS decoders (libopus and libopusfile)
- FLAC decoder (libflac)
- VORBIS decoder (libfishsound)
- PCM renderers (ALSA and Pulseaudio)
- OGG demuxer (liboggz)
- WEBM demuxer (libnestegg)
- HTTP renderer (i.e. ala icecast, for LAN streaming)
- HTTP source (libcurl)
- mp3 encoder (LAME),
- a VP8 video decoder (libvpx),
- a YUV video renderer (libsdl)
- general purpose plugins, like binary file readers and writers
- etc...
There is also a bespoke test execution framework for testing the graphs/pipelines of OpenMAX IL components used in Tizonia:
- Test execution framework to build and test arbitrary OpenMAX IL graphs/pipelines (tunneled and non-tunneled) using a custom, easy-to-write XML syntax.
- Skema's Github repo: https://github.com/tizonia/skema
- Skema's documentation is located in Tizonia's wiki: https://github.com/tizonia/tizonia-openmax-il/wiki/Skema