66 lines
2.3 KiB
Plaintext
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;
|