summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cflac.c13
-rw-r--r--playlist.c27
-rw-r--r--playlist.h2
3 files changed, 31 insertions, 11 deletions
diff --git a/cflac.c b/cflac.c
index 358d87eb..92e44984 100644
--- a/cflac.c
+++ b/cflac.c
@@ -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) {
diff --git a/playlist.c b/playlist.c
index fb318824..94f2181e 100644
--- a/playlist.c
+++ b/playlist.c
@@ -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;
diff --git a/playlist.h b/playlist.h
index f3de1022..121e187e 100644
--- a/playlist.h
+++ b/playlist.h
@@ -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);