summaryrefslogtreecommitdiff
path: root/playlist.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-02 13:45:23 +0100
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-01-02 13:45:23 +0100
commit044a715c61f1b78cb569fd7711d794296b61b994 (patch)
tree64545d805efabd45c3d23e00d9729e20310f43db /playlist.c
parent40d3a5c66105914c1113bc7ef0649e13b3db690f (diff)
changed cuesheet loading APIs, embedded metadata now adds up with cuesheet metadata
Diffstat (limited to 'playlist.c')
-rw-r--r--playlist.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/playlist.c b/playlist.c
index c6e9438b..d75fd39c 100644
--- a/playlist.c
+++ b/playlist.c
@@ -232,7 +232,8 @@ pl_process_cue_track (playItem_t *after, const char *fname, playItem_t **prev, c
}
playItem_t *
-pl_insert_cue_from_buffer (playItem_t *after, const char *fname, const uint8_t *buffer, int buffersize, struct DB_decoder_s *decoder, const char *ftype, int numsamples, int samplerate) {
+pl_insert_cue_from_buffer (playItem_t *after, playItem_t *origin, const uint8_t *buffer, int buffersize, int numsamples, int samplerate) {
+ playItem_t *ins = after;
trace ("pl_insert_cue_from_buffer numsamples=%d, samplerate=%d\n", numsamples, samplerate);
char performer[256] = "";
char albumtitle[256] = "";
@@ -279,7 +280,7 @@ pl_insert_cue_from_buffer (playItem_t *after, const char *fname, const uint8_t *
}
else if (!strncmp (p, "TRACK ", 6)) {
// add previous track
- after = pl_process_cue_track (after, fname, &prev, track, index00, index01, pregap, title, performer, albumtitle, decoder, ftype, samplerate);
+ after = pl_process_cue_track (after, origin->fname, &prev, track, index00, index01, pregap, title, performer, albumtitle, origin->decoder, origin->filetype, samplerate);
track[0] = 0;
title[0] = 0;
pregap[0] = 0;
@@ -305,21 +306,24 @@ pl_insert_cue_from_buffer (playItem_t *after, const char *fname, const uint8_t *
// fprintf (stderr, "got unknown line:\n%s\n", p);
}
}
- after = pl_process_cue_track (after, fname, &prev, track, index00, index01, pregap, title, performer, albumtitle, decoder, ftype, samplerate);
+ after = pl_process_cue_track (after, origin->fname, &prev, track, index00, index01, pregap, title, performer, albumtitle, origin->decoder, origin->filetype, samplerate);
if (after) {
trace ("last track endsample: %d\n", numsamples-1);
after->endsample = numsamples-1;
pl_set_item_duration (after, (float)(after->endsample - after->startsample + 1) / samplerate);
}
+ // copy metadata from embedded tags
+ playItem_t *first = ins ? ins->next[PL_MAIN] : playlist_head[PL_MAIN];
+ junk_copy (origin, first, after);
return after;
}
playItem_t *
-pl_insert_cue (playItem_t *after, const char *fname, struct DB_decoder_s *decoder, const char *ftype, int numsamples, int samplerate) {
+pl_insert_cue (playItem_t *after, playItem_t *origin, int numsamples, int samplerate) {
trace ("pl_insert_cue numsamples=%d, samplerate=%d\n", numsamples, samplerate);
- int len = strlen (fname);
+ int len = strlen (origin->fname);
char cuename[len+5];
- strcpy (cuename, fname);
+ strcpy (cuename, origin->fname);
strcpy (cuename+len, ".cue");
FILE *fp = fopen (cuename, "rb");
if (!fp) {
@@ -346,7 +350,7 @@ pl_insert_cue (playItem_t *after, const char *fname, struct DB_decoder_s *decode
return NULL;
}
fclose (fp);
- return pl_insert_cue_from_buffer (after, fname, buf, sz, decoder, ftype, numsamples, samplerate);
+ return pl_insert_cue_from_buffer (after, origin, buf, sz, numsamples, samplerate);
}
playItem_t *