summaryrefslogtreecommitdiff
path: root/apps/cuesheet.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/cuesheet.c')
-rw-r--r--apps/cuesheet.c51
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 349const char *get_cuesheetid3_token(struct wps_token *token, struct mp3entry *id3,
350void 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;