diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2011-02-20 15:27:10 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2011-02-20 15:27:10 +0000 |
commit | 85e40257dc65e3542b785898ddf60482e2d1ab0c (patch) | |
tree | f7bf9b33decce4296fbea0f437252f40aba6d5de /apps/codecs/lib | |
parent | 460d54977ae2f9c2c5997c6c4cd5541ab436d718 (diff) | |
download | rockbox-85e40257dc65e3542b785898ddf60482e2d1ab0c.tar.gz rockbox-85e40257dc65e3542b785898ddf60482e2d1ab0c.zip |
Enforce that codecs wait for their metadata in a proper-ish and consistent manner. Sort of a halfway patch; best would be to give them an internal copy of the current track information which lasts unaltered by playback until a track switch or unload.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29348 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/lib')
-rw-r--r-- | apps/codecs/lib/codeclib.c | 13 | ||||
-rw-r--r-- | apps/codecs/lib/codeclib.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/apps/codecs/lib/codeclib.c b/apps/codecs/lib/codeclib.c index 5af4e01fff..af0894c498 100644 --- a/apps/codecs/lib/codeclib.c +++ b/apps/codecs/lib/codeclib.c | |||
@@ -49,6 +49,19 @@ void codec_set_replaygain(struct mp3entry* id3) | |||
49 | ci->configure(DSP_SET_ALBUM_PEAK, id3->album_peak); | 49 | ci->configure(DSP_SET_ALBUM_PEAK, id3->album_peak); |
50 | } | 50 | } |
51 | 51 | ||
52 | /* Note: codec really needs its own private metdata copy for the current | ||
53 | track being processed in order to be stable. */ | ||
54 | int codec_wait_taginfo(void) | ||
55 | { | ||
56 | while (!*ci->taginfo_ready && !ci->stop_codec && !ci->new_track) | ||
57 | ci->sleep(0); | ||
58 | if (ci->stop_codec) | ||
59 | return -1; | ||
60 | if (ci->new_track) | ||
61 | return 1; | ||
62 | return 0; | ||
63 | } | ||
64 | |||
52 | /* Various "helper functions" common to all the xxx2wav decoder plugins */ | 65 | /* Various "helper functions" common to all the xxx2wav decoder plugins */ |
53 | 66 | ||
54 | 67 | ||
diff --git a/apps/codecs/lib/codeclib.h b/apps/codecs/lib/codeclib.h index b7685ebbcb..41b466ed1f 100644 --- a/apps/codecs/lib/codeclib.h +++ b/apps/codecs/lib/codeclib.h | |||
@@ -157,6 +157,7 @@ static inline unsigned int bs_generic(unsigned int v, int mode) | |||
157 | 157 | ||
158 | int codec_init(void); | 158 | int codec_init(void); |
159 | void codec_set_replaygain(struct mp3entry* id3); | 159 | void codec_set_replaygain(struct mp3entry* id3); |
160 | int codec_wait_taginfo(void); /* 0 = success */ | ||
160 | 161 | ||
161 | #ifdef RB_PROFILE | 162 | #ifdef RB_PROFILE |
162 | void __cyg_profile_func_enter(void *this_fn, void *call_site) | 163 | void __cyg_profile_func_enter(void *this_fn, void *call_site) |