esp32-audio-player 0.1.0
Audio player engine for ESP32
Loading...
Searching...
No Matches
library.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
18#pragma once
19
20#include "audio_player/tags.h"
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26typedef uint32_t lib_id_t;
27#define LIB_ID_NONE 0xFFFFFFFFu
28
42
43typedef struct {
45 char title[TAG_TEXT_MAX];
46 char subtitle[TAG_TEXT_MAX];
47 uint32_t count;
48 uint32_t duration_ms;
49 uint16_t year;
50 uint32_t sort_letter;
52
53typedef struct {
55 char path[CORE_PATH_MAX];
57 lib_id_t album_id, artist_id, genre_id;
58 uint32_t file_size;
59 uint32_t mtime;
61
62typedef struct {
63 uint32_t files_seen;
64 uint32_t files_total;
65 uint32_t tracks_added, tracks_updated, tracks_removed;
66 const char *current_path;
68
72typedef bool (*lib_scan_cb_t)(const lib_scan_progress_t *p, void *user);
73
79typedef void (*lib_throttle_cb_t)(void *user);
80
81typedef struct library library_t;
82
83typedef struct {
84 const char *music_root;
85 const char *db_dir;
90
93
95int library_scan(library_t *lib, bool full_rebuild, lib_scan_cb_t cb, void *user);
97
98uint32_t library_track_count(const library_t *lib);
100uint32_t library_view_count(library_t *lib, lib_view_t view, lib_id_t parent);
101int library_view_item(library_t *lib, lib_view_t view, lib_id_t parent, uint32_t index, lib_item_t *out);
103uint32_t library_view_find_letter(library_t *lib, lib_view_t view, lib_id_t parent, uint32_t letter);
106uint32_t library_view_track_ids(library_t *lib, lib_view_t view, lib_id_t parent, lib_id_t *out, uint32_t max);
107
109lib_id_t library_find_path(library_t *lib, const char *path);
110
117uint32_t library_generation(const library_t *lib);
118bool library_translate_ids(library_t *lib, uint32_t *gen, lib_id_t *ids, uint32_t n);
119
121int library_save_position(library_t *lib, const char *path, uint32_t position_ms);
122uint32_t library_load_position(library_t *lib, const char *path);
123
124#ifdef __cplusplus
125}
126#endif
#define CORE_PATH_MAX
Maximum path length used by the core (bytes, UTF-8, including terminator).
Definition base.h:39
uint32_t library_load_position(library_t *lib, const char *path)
0 if none
lib_view_t
Definition library.h:29
@ LIB_VIEW_COUNT
Definition library.h:40
@ LIB_VIEW_ARTIST_ALBUMS
parent: artist id. Albums by year, then title
Definition library.h:32
@ LIB_VIEW_AUDIOBOOKS
parent: none. Albums flagged as audiobooks
Definition library.h:39
@ LIB_VIEW_ARTISTS
parent: none. Album artists (fallback: artist)
Definition library.h:30
@ LIB_VIEW_ARTIST_TRACKS
parent: artist id. All tracks of the artist
Definition library.h:34
@ LIB_VIEW_RECENT
parent: none. Newest files first (by mtime)
Definition library.h:38
@ LIB_VIEW_ALBUMS
parent: none. All albums sorted by title
Definition library.h:31
@ LIB_VIEW_TRACKS
parent: none. All tracks sorted by title
Definition library.h:35
@ LIB_VIEW_GENRES
parent: none
Definition library.h:36
@ LIB_VIEW_GENRE_ALBUMS
parent: genre id
Definition library.h:37
@ LIB_VIEW_ALBUM_TRACKS
parent: album id. Disc, track number, title
Definition library.h:33
bool library_translate_ids(library_t *lib, uint32_t *gen, lib_id_t *ids, uint32_t n)
int library_scan(library_t *lib, bool full_rebuild, lib_scan_cb_t cb, void *user)
Incremental scan (new/changed/removed files). Blocking; run it in a worker thread.
uint32_t library_view_count(library_t *lib, lib_view_t view, lib_id_t parent)
Number of rows in a view (parent = LIB_ID_NONE when the view has no parent).
bool(* lib_scan_cb_t)(const lib_scan_progress_t *p, void *user)
Return false to cancel the scan.
Definition library.h:72
int library_get_track(library_t *lib, lib_id_t track_id, lib_track_t *out)
library_t * library_open(const library_config_t *cfg)
loads an existing index if present
void library_close(library_t *lib)
uint32_t library_track_count(const library_t *lib)
int library_save_position(library_t *lib, const char *path, uint32_t position_ms)
Audiobook / long-file positions and simple bookmarks (stored in db_dir/positions.bin).
struct library library_t
Definition library.h:81
uint32_t library_view_track_ids(library_t *lib, lib_view_t view, lib_id_t parent, lib_id_t *out, uint32_t max)
Track ids of a view in display order (for "play all" / queue building).
lib_id_t library_find_path(library_t *lib, const char *path)
LIB_ID_NONE if not indexed.
uint32_t lib_id_t
Definition library.h:26
void(* lib_throttle_cb_t)(void *user)
Scanner pacing, called from the scanning thread: between files and folders (the platform may block he...
Definition library.h:79
int library_view_item(library_t *lib, lib_view_t view, lib_id_t parent, uint32_t index, lib_item_t *out)
uint32_t library_view_find_letter(library_t *lib, lib_view_t view, lib_id_t parent, uint32_t letter)
Index of the first row whose sort letter is >= letter (for jump-to-letter).
uint32_t library_generation(const library_t *lib)
Track ids belong to one snapshot of the index: a completed scan renumbers them.
bool library_is_scanning(const library_t *lib)
Definition library.h:43
uint16_t year
Definition library.h:49
lib_id_t id
id of the artist/album/genre/track this row stands for
Definition library.h:44
uint32_t count
children: albums of an artist, tracks of an album...
Definition library.h:47
uint32_t sort_letter
collate_index_letter() of the sort key
Definition library.h:50
uint32_t duration_ms
tracks: duration; albums: total
Definition library.h:48
Definition library.h:62
uint32_t files_total
0 while still counting
Definition library.h:64
const char * current_path
valid only during the callback
Definition library.h:66
uint32_t tracks_added
Definition library.h:65
uint32_t files_seen
Definition library.h:63
Definition library.h:53
uint32_t file_size
Definition library.h:58
track_tags_t tags
Definition library.h:56
lib_id_t id
Definition library.h:54
lib_id_t album_id
Definition library.h:57
uint32_t mtime
Definition library.h:59
Definition library.h:83
lib_throttle_cb_t throttle
Definition library.h:87
void * throttle_user
Definition library.h:88
const char * db_dir
e.g. "/sdcard/.music/db"
Definition library.h:85
const char * music_root
e.g. "/sdcard" (scanned recursively, hidden dirs skipped)
Definition library.h:84
bool ignore_articles
collation option
Definition library.h:86
Definition tags.h:20
Metadata readers: ID3v2.2/2.3/2.4 (+unsynchronisation, extended header), ID3v1, FLAC Vorbis comments ...
#define TAG_TEXT_MAX
Field limits (bytes, UTF-8, including NUL).
Definition tags.h:17