ocarina/DESIGN

66 lines
2.3 KiB
Plaintext

===============================================================================
= =
= Ocarina 6.3 =
= =
===============================================================================
Ocarina 6.2 is the 6th implementation of the Ocarina music player - a
lightweight, GTK+ based music player with all the features that I want.
Improvements over the 5.x series will include the existence of both a design
document (this file) and unit tests. This should make maintenance easier and
help me stay focused.
Ocarina 6.2 will use Gstreamer 1.0 for audio playback, GTK-MM 3 for user
interface development, and Taglib for extracting tags.
Install:
Ocarina will be compiled into a single executable placed under
/usr/bin/. Any extra files needed to run will be placed under
/usr/share/ocarina/.
Core Layers:
Ocarina was written with an "every file is a layer" strategy. This
means code can only call functions that reside in a lower layer.
From top to bottom, core layers are:
* Audio (include/core/audio.h)
* Audio driver (include/core/driver.h)
* Deck (include/core/deck.h)
* Playlist (include/core/playlist.h)
* Library (include/core/library.h)
* Queue (include/core/queue.h)
* RNG (include/core/random.h)
* Tags (include/core/tags/*.h)
* Idle queue (include/core/idle.h)
* Filter (include/core/filter.h)
* Index (include/core/index.h)
* Databases (include/core/database.h)
* File (include/core/file.h)
* Callbacks (include/core/callback.h)
* Version (include/core/version.h)
Callbacks:
Callbacks are used to notify a unit test or the gui that something in
the backend has changed. The callbacks structure should be initialized
with no-op default values and filled in by the user through the
get_callbacks() function.
- Callback functions:
struct Callbacks {
void (*on_library_add)(unsigned int, library :: Library *);
void (*on_library_update)(unsigned int, library :: Library *);
void (*on_library_track_add)();
};
static struct Callbacks callbacks;
- API:
struct Callbacks *get_callbacks();
Return the Callbacks structure;