diff options
-rw-r--r-- | cflac.c | 13 | ||||
-rw-r--r-- | playlist.c | 27 | ||||
-rw-r--r-- | playlist.h | 2 |
3 files changed, 31 insertions, 11 deletions
@@ -349,10 +349,17 @@ cflac_insert (playItem_t *after, const char *fname) { } // try external cue + playItem_t *cue_after = pl_insert_cue (after, fname, &cflac, "flac"); + if (cue_after) { + cue_after->timeend = cb.duration; + cue_after->duration = cue_after->timeend - cue_after->timestart; + return cue_after; + } +#if 0 char cuename[1024]; snprintf (cuename, 1024, "%s.cue", fname); playItem_t *cue_after; - if ((cue_after = pl_insert_cue (after, cuename, "FLAC")) != NULL) { + if ((cue_after = pl_insert_cue (after, cuename, &cflac, "flac")) != NULL) { cue_after->timeend = cb.duration; cue_after->duration = cue_after->timeend - cue_after->timestart; return cue_after; @@ -362,13 +369,13 @@ cflac_insert (playItem_t *after, const char *fname) { strncpy (cuename, fname, n); strcpy (cuename + n, "cue"); // printf ("loading %s\n", cuename); - if ((cue_after = pl_insert_cue (after, cuename, "FLAC")) != NULL) { + if ((cue_after = pl_insert_cue (after, cuename, &cflac, "flac")) != NULL) { cue_after->timeend = cb.duration; cue_after->duration = cue_after->timeend - cue_after->timestart; return cue_after; } } - +#endif //printf ("adding flac without cue\n"); decoder = FLAC__stream_decoder_new(); if (!decoder) { @@ -27,6 +27,11 @@ #include <assert.h> #include "playlist.h" #include "codec.h" +#include "streamer.h" +#include "messagepump.h" +#include "messages.h" +#include "playback.h" + #include "cwav.h" #include "cvorbis.h" #include "cdumb.h" @@ -34,10 +39,6 @@ #include "cgme.h" #include "cflac.h" #include "csid.h" -#include "streamer.h" -#include "messagepump.h" -#include "messages.h" -#include "playback.h" codec_t *codecs[] = { &cdumb, &cvorbis, &cflac, &cgme, &cmp3, &csid, NULL @@ -136,10 +137,22 @@ pl_cue_parse_time (const char *p) { } playItem_t * -pl_insert_cue (playItem_t *after, const char *cuename, const char *ftype) { +pl_insert_cue (playItem_t *after, const char *fname, codec_t *codec, const char *ftype) { + int len = strlen (fname); + char cuename[len+5]; + strcpy (cuename, fname); + strcpy (cuename+len, ".cue"); FILE *fp = fopen (cuename, "rt"); if (!fp) { - return NULL; + char *ptr = cuename + len; + while (ptr >= cuename && *ptr != '.') { + ptr--; + } + strcpy (ptr+1, "cue"); + fp = fopen (cuename, "rt"); + if (!fp) { + return NULL; + } } char performer[1024]; char albumtitle[1024]; @@ -233,7 +246,7 @@ pl_insert_cue (playItem_t *after, const char *cuename, const char *ftype) { // printf ("adding %s\n", str); playItem_t *it = malloc (sizeof (playItem_t)); memset (it, 0, sizeof (playItem_t)); - it->codec = &cflac; + it->codec = codec; it->fname = strdup (file); it->tracknum = atoi (track); it->timestart = tstart; @@ -91,7 +91,7 @@ int pl_get_idx_of (playItem_t *it); playItem_t * -pl_insert_cue (playItem_t *after, const char *cuename, const char *ftype); +pl_insert_cue (playItem_t *after, const char *cuename, struct codec_s *codec, const char *ftype); int pl_set_current (playItem_t *it); |