From a1bde6b99d76ac75eddd5a3ac77c77e4249c5de4 Mon Sep 17 00:00:00 2001 From: Jochen Keil Date: Tue, 31 Mar 2009 22:03:08 +0200 Subject: remove old commented code --- src/decoder/flac_plugin.c | 8 -------- 1 file changed, 8 deletions(-) (limited to 'src/decoder/flac_plugin.c') diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index 6d874a886..deb64d285 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -778,14 +778,6 @@ flac_filedecode(struct decoder *decoder, const char *fname) flac_container_decode(decoder, fname, false); } else flac_filedecode_internal(decoder, fname, false); - - /* - if (directory->device == CONTAINER) - { - flac_container_decode(decoder, fname, is_ogg); - return; - } - */ } #endif /* FLAC_API_VERSION_CURRENT >= 7 */ -- cgit v1.2.3 From 6720a0a9404171fba2de86d247c3d7ed0174cbd4 Mon Sep 17 00:00:00 2001 From: Jochen Keil Date: Tue, 31 Mar 2009 22:04:04 +0200 Subject: free previously allocated flac metadata object --- src/decoder/flac_plugin.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/decoder/flac_plugin.c') diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index deb64d285..ec1fd01ef 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -316,6 +316,7 @@ flac_cue_tag_load(const char *file) if (FLAC__metadata_get_streaminfo(file, si)) { sample_rate = si->data.stream_info.sample_rate; + FLAC__metadata_object_delete(si); } if (FLAC__metadata_get_cuesheet(file, &cs)) -- cgit v1.2.3 From d7b0c768b02f78730830e167e96861b8b059cfa7 Mon Sep 17 00:00:00 2001 From: Jochen Keil Date: Tue, 31 Mar 2009 22:06:28 +0200 Subject: track length is computed correctly now --- src/decoder/flac_plugin.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/decoder/flac_plugin.c') diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index ec1fd01ef..603225bfd 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -324,10 +324,9 @@ flac_cue_tag_load(const char *file) if (cs->data.cue_sheet.tracks != NULL && (tnum <= cs->data.cue_sheet.num_tracks - 1)) { - track_time = cs->data.cue_sheet.tracks[tnum].offset - 1 + track_time = cs->data.cue_sheet.tracks[tnum].offset - cs->data.cue_sheet.tracks[tnum - 1].offset; } - FLAC__metadata_object_delete(cs); } -- cgit v1.2.3 From 4bfbdfe5c522011a695c804cfccf190eb4500e9a Mon Sep 17 00:00:00 2001 From: Jochen Keil Date: Tue, 31 Mar 2009 22:07:20 +0200 Subject: Tag subtracks according to "cuesheet" vorbis comment value Cuesheets are often saved as vorbis comment flac files (CUESHEET=.. case doesn't matter). We can parse this now and use the information to tag the subtracks (from the embedded cuesheets). --- src/decoder/flac_plugin.c | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'src/decoder/flac_plugin.c') diff --git a/src/decoder/flac_plugin.c b/src/decoder/flac_plugin.c index 603225bfd..e0a2cfe4c 100644 --- a/src/decoder/flac_plugin.c +++ b/src/decoder/flac_plugin.c @@ -27,6 +27,10 @@ #include #include +#ifdef HAVE_CUE /* libcue */ +#include "../cue/cue_tag.h" +#endif + /* this code was based on flac123, from flac-tools */ static flac_read_status @@ -290,20 +294,44 @@ flac_cue_tag_load(const char *file) { struct tag* tag = NULL; char* char_tnum = NULL; - char* slash = NULL; + char* ptr = NULL; + unsigned int i = 0; unsigned int tnum = 0; unsigned int sample_rate = 0; FLAC__uint64 track_time = 0; +#ifdef HAVE_CUE /* libcue */ + FLAC__StreamMetadata* vc = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT); +#endif /* libcue */ FLAC__StreamMetadata* si = FLAC__metadata_object_new(FLAC__METADATA_TYPE_STREAMINFO); FLAC__StreamMetadata* cs = FLAC__metadata_object_new(FLAC__METADATA_TYPE_CUESHEET); tnum = flac_vtrack_tnum(file); char_tnum = g_strdup_printf("%u", tnum); - slash = strrchr(file, '/'); - *slash = '\0'; + ptr = strrchr(file, '/'); + *ptr = '\0'; + +#ifdef HAVE_CUE /* libcue */ + if (FLAC__metadata_get_tags(file, &vc)) + { + for (i = 0; i < vc->data.vorbis_comment.num_comments; i++) + { + if ((ptr = (char*)vc->data.vorbis_comment.comments[i].entry) != NULL) + { + if (g_ascii_strncasecmp(ptr, "cuesheet", 8) == 0) + { + while (*(++ptr) != '='); + tag = cue_tag_string( ++ptr, + tnum); + } + } + } + FLAC__metadata_object_delete(vc); + } +#endif /* libcue */ - tag = flac_tag_load(file, char_tnum); + if (tag == NULL) + tag = flac_tag_load(file, char_tnum); if (char_tnum != NULL) { -- cgit v1.2.3