Skip to content

Latest commit

 

History

History
117 lines (89 loc) · 5.55 KB

PROJECT.md

File metadata and controls

117 lines (89 loc) · 5.55 KB

Components

Command-line cloud music player and audio streaming client/server.

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).

A fully-featured OpenMAX IL 1.2 multimedia framework

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.

'libtizcore' : OpenMAX IL 1.2 Core implementation

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' : OpenMAX IL 1.2 component framework

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.

'libtizplatform' : An OS abstraction/utility library

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..

OpenMAX IL 1.2 Resource Management (RM)

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.

OpenMAX IL 1.2 plugins

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...

Skema: Tizonia's test execution framework for OpenMAX IL components.

There is also a bespoke test execution framework for testing the graphs/pipelines of OpenMAX IL components used in Tizonia: