2013-05-13 23:13:54 -04:00
|
|
|
===============================================================================
|
|
|
|
= =
|
2014-10-31 08:16:38 -04:00
|
|
|
= Ocarina 6.3 =
|
2013-05-13 23:13:54 -04:00
|
|
|
= =
|
|
|
|
===============================================================================
|
|
|
|
|
2014-06-14 19:28:45 -04:00
|
|
|
Ocarina 6.2 is the 6th implementation of the Ocarina music player - a
|
2014-03-02 10:42:22 -05:00
|
|
|
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.
|
2013-05-13 23:13:54 -04:00
|
|
|
|
2014-06-14 19:28:45 -04:00
|
|
|
Ocarina 6.2 will use Gstreamer 1.0 for audio playback, GTK-MM 3 for user
|
2014-03-02 10:42:22 -05:00
|
|
|
interface development, and Taglib for extracting tags.
|
2013-05-26 11:08:41 -04:00
|
|
|
|
|
|
|
|
2013-07-04 18:03:15 -04:00
|
|
|
|
|
|
|
Install:
|
|
|
|
Ocarina will be compiled into a single executable placed under
|
|
|
|
/usr/bin/. Any extra files needed to run will be placed under
|
2014-03-02 10:42:22 -05:00
|
|
|
/usr/share/ocarina/.
|
2013-07-04 18:03:15 -04:00
|
|
|
|
|
|
|
|
2014-11-01 21:53:50 -04:00
|
|
|
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)
|
2014-12-02 08:24:36 -05:00
|
|
|
* Tags (include/core/tags/*.h)
|
2014-11-01 21:53:50 -04:00
|
|
|
* 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)
|
|
|
|
|
|
|
|
|
2013-07-04 18:03:15 -04:00
|
|
|
|
2014-03-07 20:49:29 -05:00
|
|
|
Callbacks:
|
2014-01-15 20:40:24 -05:00
|
|
|
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.
|
|
|
|
|
2014-01-18 11:00:08 -05:00
|
|
|
|
2014-01-15 20:40:24 -05:00
|
|
|
- Callback functions:
|
|
|
|
struct Callbacks {
|
|
|
|
void (*on_library_add)(unsigned int, library :: Library *);
|
|
|
|
void (*on_library_update)(unsigned int, library :: Library *);
|
2014-01-18 11:00:08 -05:00
|
|
|
void (*on_library_track_add)();
|
2014-01-15 20:40:24 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
static struct Callbacks callbacks;
|
|
|
|
|
|
|
|
- API:
|
|
|
|
struct Callbacks *get_callbacks();
|
|
|
|
Return the Callbacks structure;
|