Media Framework
From The Neuros Technology Wiki
The Neuros Media Framework controls all media playback on a Neuros device. The framework is a client/server architecture. The server interfaces with the Plugin API and associated plugins, while the client makes requests of the media server. The required complexity of client/server communication is very low; the client can basically pass the server a file URI and say "have fun". However, the protocol will allow for more complex control of the server if needs be.
Contents |
[edit] Plugin API
The plugin API is a clean, standardized way to enable support for the large diversity of formats available today. Similar in spirit to the plugin APIs of the popular Windows media player WinAmp and the gStreamer framework which powers multimedia on the Gnome desktop, the plugins exposed by the API will be used for most, if not all, media functionality.
[edit] Framework Server
It slices. It dices. It is under heavy development, and not many specifics are available.
[edit] Framework Protocol
Also pretty much undefined as yet. It's not even known whether this thing will be a true protocol, operating over a socket, or if it will be soemthing else entirely.
[edit] Framework Clients
Clients will be able to use the protocol directly, if they so choose. However, most, if not all, protocol events will be handle
[edit] Discussion
[edit] Why choose a client/server architecture?
In order to prevent buffer underruns -- unacceptable when decoding, and absolutely unacceptable when encoding -- the code that interfaces with the DSP and hardware must be designed with very tight constraints. The engine must be multi-threaded; it must have very specific latency requirements; it must be able to process multiple streams at once, either for video and audio, or for advanced audio features like crossfading and gapless audio support; and so forth. These requirements are part of what makes developing for the embedded and desktop environments radically different, and what discourages a lot of creative development on devices like personal media players.
By choosing a client/server architecture, the Neuros software team has again chosen to make openness and community involvement a priority. By making the requirements for basic media playback as low as on the desktop, the Neuros community is inviting a world of developers to get creative and try out their ideas quickly.
[edit] Name
I (srobertson) just picked the name "Neuros Media Framework" while editing the document because it sounded cool and wasn't too horribly wrong. However, no official developer has referred to the client/server architecture as a whole, so I had no idea what to call it. Thoughts?
