mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 10:37:38 -04:00
Hook up .cue file detection via a callback klugde on HWCODEC, to make cue sheet support actually work.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12526 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
35ad10be59
commit
509a96dd51
3 changed files with 22 additions and 0 deletions
|
@ -40,12 +40,22 @@
|
||||||
#include "playback.h"
|
#include "playback.h"
|
||||||
#include "cuesheet.h"
|
#include "cuesheet.h"
|
||||||
|
|
||||||
|
#if CONFIG_CODEC != SWCODEC
|
||||||
|
/* special trickery because the hwcodec playback engine is in firmware/ */
|
||||||
|
static bool cuesheet_handler(const char *filename)
|
||||||
|
{
|
||||||
|
return cuesheet_is_enabled() && look_for_cuesheet_file(filename);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void cuesheet_init(void)
|
void cuesheet_init(void)
|
||||||
{
|
{
|
||||||
if (global_settings.cuesheet) {
|
if (global_settings.cuesheet) {
|
||||||
curr_cue = (struct cuesheet *)buffer_alloc(sizeof(struct cuesheet));
|
curr_cue = (struct cuesheet *)buffer_alloc(sizeof(struct cuesheet));
|
||||||
temp_cue = (struct cuesheet *)buffer_alloc(sizeof(struct cuesheet));
|
temp_cue = (struct cuesheet *)buffer_alloc(sizeof(struct cuesheet));
|
||||||
|
#if CONFIG_CODEC != SWCODEC
|
||||||
|
audio_set_cuesheet_callback(cuesheet_handler);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
curr_cue = NULL;
|
curr_cue = NULL;
|
||||||
temp_cue = NULL;
|
temp_cue = NULL;
|
||||||
|
|
|
@ -62,5 +62,6 @@ void audio_set_track_buffer_event(void (*handler)(struct mp3entry *id3,
|
||||||
bool last_track));
|
bool last_track));
|
||||||
void audio_set_track_unbuffer_event(void (*handler)(struct mp3entry *id3,
|
void audio_set_track_unbuffer_event(void (*handler)(struct mp3entry *id3,
|
||||||
bool last_track));
|
bool last_track));
|
||||||
|
void audio_set_cuesheet_callback(bool (*handler)(const char *filename));
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -121,6 +121,9 @@ void (*track_changed_callback)(struct mp3entry *id3);
|
||||||
void (*track_buffer_callback)(struct mp3entry *id3, bool last_track);
|
void (*track_buffer_callback)(struct mp3entry *id3, bool last_track);
|
||||||
void (*track_unbuffer_callback)(struct mp3entry *id3, bool last_track);
|
void (*track_unbuffer_callback)(struct mp3entry *id3, bool last_track);
|
||||||
|
|
||||||
|
/* Cuesheet callback */
|
||||||
|
static bool (*cuesheet_callback)(const char *filename) = NULL;
|
||||||
|
|
||||||
static const char mpeg_thread_name[] = "mpeg";
|
static const char mpeg_thread_name[] = "mpeg";
|
||||||
static unsigned int mpeg_errno;
|
static unsigned int mpeg_errno;
|
||||||
|
|
||||||
|
@ -490,6 +493,11 @@ void audio_set_track_changed_event(void (*handler)(struct mp3entry *id3))
|
||||||
track_changed_callback = handler;
|
track_changed_callback = handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void audio_set_cuesheet_callback(bool (*handler)(const char *filename))
|
||||||
|
{
|
||||||
|
cuesheet_callback = handler;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef SIMULATOR
|
#ifndef SIMULATOR
|
||||||
/* Send callback events to notify about removing old tracks. */
|
/* Send callback events to notify about removing old tracks. */
|
||||||
static void generate_unbuffer_events(void)
|
static void generate_unbuffer_events(void)
|
||||||
|
@ -926,6 +934,9 @@ static struct trackdata *add_track_to_tag_list(const char *filename)
|
||||||
if (track->id3.album)
|
if (track->id3.album)
|
||||||
lcd_getstringsize(track->id3.album, NULL, NULL);
|
lcd_getstringsize(track->id3.album, NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
if (cuesheet_callback)
|
||||||
|
if (cuesheet_callback(filename))
|
||||||
|
track->id3.cuesheet_type = 1;
|
||||||
|
|
||||||
track_write_idx = (track_write_idx+1) & MAX_TRACK_ENTRIES_MASK;
|
track_write_idx = (track_write_idx+1) & MAX_TRACK_ENTRIES_MASK;
|
||||||
debug_tags();
|
debug_tags();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue