diff options
Diffstat (limited to 'apps/cuesheet.c')
-rw-r--r-- | apps/cuesheet.c | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/apps/cuesheet.c b/apps/cuesheet.c index c75ea65334..cadb2ab8f6 100644 --- a/apps/cuesheet.c +++ b/apps/cuesheet.c | |||
@@ -346,29 +346,39 @@ bool curr_cuesheet_skip(struct cuesheet *cue, int direction, unsigned long curr_ | |||
346 | } | 346 | } |
347 | 347 | ||
348 | } | 348 | } |
349 | 349 | const char *get_cuesheetid3_token(struct wps_token *token, struct mp3entry *id3, | |
350 | void cue_spoof_id3(struct cuesheet *cue, struct mp3entry *id3) | 350 | int offset_tracks, char *buf, int buf_size) |
351 | { | 351 | { |
352 | struct cuesheet *cue = id3?id3->cuesheet:NULL; | ||
352 | if (!cue || !cue->curr_track) | 353 | if (!cue || !cue->curr_track) |
353 | return; | 354 | return NULL; |
354 | 355 | ||
355 | struct cue_track_info *track = cue->curr_track; | 356 | struct cue_track_info *track = cue->curr_track; |
356 | 357 | if (offset_tracks) | |
357 | id3->title = *track->title ? track->title : NULL; | 358 | { |
358 | id3->artist = *track->performer ? track->performer : NULL; | 359 | if (cue->curr_track_idx+offset_tracks < cue->track_count) |
359 | id3->composer = *track->songwriter ? track->songwriter : NULL; | 360 | track+=offset_tracks; |
360 | id3->album = *cue->title ? cue->title : NULL; | 361 | else |
361 | 362 | return NULL; | |
362 | /* if the album artist is the same as the track artist, we hide it. */ | 363 | } |
363 | if (strcmp(cue->performer, track->performer)) | 364 | switch (token->type) |
364 | id3->albumartist = *cue->performer ? cue->performer : NULL; | 365 | { |
365 | else | 366 | case WPS_TOKEN_METADATA_ARTIST: |
366 | id3->albumartist = NULL; | 367 | return *track->performer ? track->performer : NULL; |
367 | 368 | case WPS_TOKEN_METADATA_COMPOSER: | |
368 | int i = cue->curr_track_idx; | 369 | return *track->songwriter ? track->songwriter : NULL; |
369 | id3->tracknum = i+1; | 370 | case WPS_TOKEN_METADATA_ALBUM: |
370 | if (id3->track_string) | 371 | return *cue->title ? cue->title : NULL; |
371 | snprintf(id3->track_string, 10, "%d/%d", i+1, cue->track_count); | 372 | case WPS_TOKEN_METADATA_ALBUM_ARTIST: |
373 | return *cue->performer ? cue->performer : NULL; | ||
374 | case WPS_TOKEN_METADATA_TRACK_TITLE: | ||
375 | return *track->title ? track->title : NULL; | ||
376 | case WPS_TOKEN_METADATA_TRACK_NUMBER: | ||
377 | snprintf(buf, buf_size, "%d/%d", | ||
378 | cue->curr_track_idx+offset_tracks+1, cue->track_count); | ||
379 | return buf; | ||
380 | } | ||
381 | return NULL; | ||
372 | } | 382 | } |
373 | 383 | ||
374 | #ifdef HAVE_LCD_BITMAP | 384 | #ifdef HAVE_LCD_BITMAP |
@@ -402,7 +412,6 @@ bool cuesheet_subtrack_changed(struct mp3entry *id3) | |||
402 | && id3->elapsed >= (cue->curr_track+1)->offset))) | 412 | && id3->elapsed >= (cue->curr_track+1)->offset))) |
403 | { | 413 | { |
404 | cue_find_current_track(cue, id3->elapsed); | 414 | cue_find_current_track(cue, id3->elapsed); |
405 | cue_spoof_id3(cue, id3); | ||
406 | return true; | 415 | return true; |
407 | } | 416 | } |
408 | return false; | 417 | return false; |