00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef CDDB_DISC_H
00023 #define CDDB_DISC_H 1
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029
00030 #include <cddb/cddb_track.h>
00031
00032
00036 #define FRAMES_PER_SECOND 75
00037
00041 #define FRAMES_TO_SECONDS(f) ((f) / FRAMES_PER_SECOND)
00042
00046 #define SECONDS_TO_FRAMES(s) ((s) * FRAMES_PER_SECOND)
00047
00051 typedef enum {
00052 CDDB_CAT_DATA = 0,
00053 CDDB_CAT_FOLK,
00054 CDDB_CAT_JAZZ,
00055 CDDB_CAT_MISC,
00057 CDDB_CAT_ROCK,
00058 CDDB_CAT_COUNTRY,
00059 CDDB_CAT_BLUES,
00060 CDDB_CAT_NEWAGE,
00061 CDDB_CAT_REGGAE,
00062 CDDB_CAT_CLASSICAL,
00063 CDDB_CAT_SOUNDTRACK,
00064 CDDB_CAT_INVALID,
00065 CDDB_CAT_LAST
00066 } cddb_cat_t;
00067
00071 extern const char *CDDB_CATEGORY[CDDB_CAT_LAST];
00072
00077 typedef struct cddb_disc_s
00078 {
00079 unsigned int discid;
00080 cddb_cat_t category;
00081 char *genre;
00082 char *title;
00083 char *artist;
00084 int length;
00085 int year;
00086 char *ext_data;
00087 int track_cnt;
00088 cddb_track_t *tracks;
00089 cddb_track_t *iterator;
00090 } cddb_disc_t;
00091
00092
00093
00094
00095
00101 cddb_disc_t *cddb_disc_new(void);
00102
00109 void cddb_disc_destroy(cddb_disc_t *disc);
00110
00116 cddb_disc_t *cddb_disc_clone(cddb_disc_t *disc);
00117
00118
00119
00120
00121
00129 void cddb_disc_add_track(cddb_disc_t *disc, cddb_track_t *track);
00130
00138 cddb_track_t *cddb_disc_get_track(cddb_disc_t *disc, int track_no);
00139
00150 cddb_track_t *cddb_disc_get_track_first(cddb_disc_t *disc);
00151
00162 cddb_track_t *cddb_disc_get_track_next(cddb_disc_t *disc);
00163
00164
00165
00166
00167
00174 #define cddb_disc_get_discid(disc) (disc)->discid
00175
00187 #define cddb_disc_set_discid(disc, id) (disc)->discid = id
00188
00204 #define cddb_disc_get_category(disc) (disc)->category
00205
00218 #define cddb_disc_set_category(disc, cat) (disc)->category = cat
00219
00233 const char *cddb_disc_get_category_str(cddb_disc_t *disc);
00234
00247 void cddb_disc_set_category_str(cddb_disc_t *disc, const char *cat);
00248
00257 #define cddb_disc_get_genre(disc) (disc)->genre
00258
00270 void cddb_disc_set_genre(cddb_disc_t *disc, const char *genre);
00271
00279 #define cddb_disc_get_length(disc) (disc)->length
00280
00287 #define cddb_disc_set_length(disc, l) (disc)->length = l
00288
00296 #define cddb_disc_get_year(disc) (disc)->year
00297
00304 #define cddb_disc_set_year(disc, y) (disc)->year = y
00305
00312 #define cddb_disc_get_track_count(disc) (disc)->track_cnt
00313
00321 #define cddb_disc_get_title(disc) (disc)->title
00322
00332 void cddb_disc_set_title(cddb_disc_t *disc, const char *title);
00333
00342 void cddb_disc_append_title(cddb_disc_t *disc, const char *title);
00343
00351 #define cddb_disc_get_artist(disc) (disc)->artist
00352
00362 void cddb_disc_set_artist(cddb_disc_t *disc, const char *artist);
00363
00372 void cddb_disc_append_artist(cddb_disc_t *disc, const char *artist);
00373
00381 #define cddb_disc_get_ext_data(disc) (disc)->ext_data
00382
00393 void cddb_disc_set_ext_data(cddb_disc_t *disc, const char *ext_data);
00394
00404 void cddb_disc_append_ext_data(cddb_disc_t *disc, const char *ext_data);
00405
00406
00407
00408
00409
00420 void cddb_disc_copy(cddb_disc_t *dst, cddb_disc_t *src);
00421
00432 int cddb_disc_calc_discid(cddb_disc_t *disc);
00433
00440 void cddb_disc_print(cddb_disc_t *disc);
00441
00442
00443 #ifdef __cplusplus
00444 }
00445 #endif
00446
00447 #endif