1) cdtext objects are no longer associated with a track but with the disc.
2) - cdio_get_cdtext no longer takes track as an argument - cdtext_get, cdtext_get_const, cdtext_set require track argument 3) Language, Genre, Genre Code and Encoding Fields are now properly parsed and stored in the cdtext object 4) Added public function cdio_get_cdtext_raw to extract the binary CD-Text 5) Added CDTEXTFILE keyword logic in cue sheet parser. Parses binary/raw CD-Text files 6) Added cdtext_genre2str to convert genre code 7) altered the example programs, test drivers, cdda-player and cd-info to work with these changes 8) Added test case 9) A few smaller changes A disc either holds CD-Text for all the tracks or does not hold any. Therefore a CD-Text object for the whole disc seems more natural to me. It also enables us to store global fields, like genre, encoding, language. Patch was tested on GNU/Linux 32 bit running Gentoo.
This commit is contained in:
@@ -537,23 +537,22 @@ get_cddb_disc_info(CdIo_t *p_cdio)
|
||||
return;
|
||||
}
|
||||
|
||||
#define add_cdtext_disc_info(format_str, info_field, FIELD) \
|
||||
if (p_cdtext->field[FIELD] && !strlen(info_field)) { \
|
||||
snprintf(info_field, sizeof(info_field), format_str, \
|
||||
p_cdtext->field[FIELD]); \
|
||||
b_cdtext_ ## info_field = true; \
|
||||
#define add_cdtext_disc_info(format_str, info_field, FIELD) \
|
||||
if (cdtext_get_const(FIELD, 0, p_cdtext) && !strlen(info_field)) { \
|
||||
snprintf(info_field, sizeof(info_field), format_str, \
|
||||
cdtext_get_const(FIELD, 0, p_cdtext)); \
|
||||
b_cdtext_ ## info_field = true; \
|
||||
}
|
||||
|
||||
static void
|
||||
get_cdtext_disc_info(CdIo_t *p_cdio)
|
||||
{
|
||||
cdtext_t *p_cdtext = cdio_get_cdtext(p_cdio, 0);
|
||||
cdtext_t *p_cdtext = cdio_get_cdtext(p_cdio);
|
||||
|
||||
if (p_cdtext) {
|
||||
add_cdtext_disc_info("%s", title, CDTEXT_TITLE);
|
||||
add_cdtext_disc_info("%s", artist, CDTEXT_PERFORMER);
|
||||
add_cdtext_disc_info("%s", genre, CDTEXT_GENRE);
|
||||
cdtext_destroy(p_cdtext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -835,10 +834,10 @@ get_cddb_track_info(track_t i_track)
|
||||
}
|
||||
|
||||
#define add_cdtext_track_info(format_str, info_field, FIELD) \
|
||||
if (p_cdtext->field[FIELD]) { \
|
||||
snprintf(cd_info[i_track].info_field, \
|
||||
sizeof(cd_info[i_track].info_field), \
|
||||
format_str, p_cdtext->field[FIELD]); \
|
||||
if (cdtext_get_const(FIELD, i_track, p_cdtext)) { \
|
||||
snprintf(cd_info[i_track].info_field, \
|
||||
sizeof(cd_info[i_track].info_field), \
|
||||
format_str, cdtext_get_const(FIELD, i_track, p_cdtext)); \
|
||||
cd_info[i_track].b_cdtext = true; \
|
||||
}
|
||||
|
||||
@@ -847,12 +846,11 @@ static void
|
||||
get_cdtext_track_info(track_t i_track)
|
||||
{
|
||||
|
||||
cdtext_t *p_cdtext = cdio_get_cdtext(p_cdio, i_track);
|
||||
cdtext_t *p_cdtext = cdio_get_cdtext(p_cdio);
|
||||
|
||||
if (NULL != p_cdtext) {
|
||||
add_cdtext_track_info("%s", title, CDTEXT_TITLE);
|
||||
add_cdtext_track_info("%s", artist, CDTEXT_PERFORMER);
|
||||
cdtext_destroy(p_cdtext);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user