diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-05 15:19:22 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-05 15:19:22 +0000 |
commit | d6e79424264147e52f70d9ed34b80e34a9d3c23b (patch) | |
tree | 712837474fee23ce550636480f797c45e3829b4c /apps | |
parent | 2d79df5086a3c632ef09bc273c201a8443a7c4a2 (diff) | |
download | rockbox-d6e79424264147e52f70d9ed34b80e34a9d3c23b.tar.gz rockbox-d6e79424264147e52f70d9ed34b80e34a9d3c23b.zip |
Fixed: Crossfading, broken elapsed info with mp3 files, possible cpu
boost problem and track changing.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7027 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r-- | apps/codecs/mpa.c | 2 | ||||
-rw-r--r-- | apps/playback.c | 23 |
2 files changed, 15 insertions, 10 deletions
diff --git a/apps/codecs/mpa.c b/apps/codecs/mpa.c index a52dc12a40..df78b07247 100644 --- a/apps/codecs/mpa.c +++ b/apps/codecs/mpa.c | |||
@@ -119,11 +119,11 @@ enum codec_status codec_start(struct codec_api* api) | |||
119 | first_frame = false; | 119 | first_frame = false; |
120 | file_end = 0; | 120 | file_end = 0; |
121 | OutputPtr = OutputBuffer; | 121 | OutputPtr = OutputBuffer; |
122 | frequency_divider = ci->id3->frequency / 100; | ||
123 | 122 | ||
124 | while (!*ci->taginfo_ready) | 123 | while (!*ci->taginfo_ready) |
125 | ci->yield(); | 124 | ci->yield(); |
126 | 125 | ||
126 | frequency_divider = ci->id3->frequency / 100; | ||
127 | ci->configure(DSP_SET_FREQUENCY, (int *)ci->id3->frequency); | 127 | ci->configure(DSP_SET_FREQUENCY, (int *)ci->id3->frequency); |
128 | 128 | ||
129 | ci->request_buffer(&size, ci->id3->first_frame_offset); | 129 | ci->request_buffer(&size, ci->id3->first_frame_offset); |
diff --git a/apps/playback.c b/apps/playback.c index e7baf5b072..e251a1ee89 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -1236,16 +1236,19 @@ bool codec_request_next_track_callback(void) | |||
1236 | 1236 | ||
1237 | /* Advance to next track. */ | 1237 | /* Advance to next track. */ |
1238 | if (ci.reload_codec && new_track > 0) { | 1238 | if (ci.reload_codec && new_track > 0) { |
1239 | /* Wait for new track data. */ | ||
1240 | while (track_ridx == track_widx && filling) | ||
1241 | yield(); | ||
1242 | |||
1243 | if (!playlist_check(1)) | 1239 | if (!playlist_check(1)) |
1244 | return false; | 1240 | return false; |
1245 | last_peek_offset--; | 1241 | last_peek_offset--; |
1246 | playlist_next(1); | 1242 | playlist_next(1); |
1247 | if (++track_ridx == MAX_TRACK) | 1243 | if (++track_ridx == MAX_TRACK) |
1248 | track_ridx = 0; | 1244 | track_ridx = 0; |
1245 | |||
1246 | /* Wait for new track data (codectype 0 is invalid). When a correct | ||
1247 | codectype is set, we can assume that the filesize is correct. */ | ||
1248 | while (tracks[track_ridx].id3.codectype == 0 && filling | ||
1249 | && !ci.stop_codec) | ||
1250 | yield(); | ||
1251 | |||
1249 | if (tracks[track_ridx].filesize == 0) { | 1252 | if (tracks[track_ridx].filesize == 0) { |
1250 | logf("Loading from disk..."); | 1253 | logf("Loading from disk..."); |
1251 | new_track = 0; | 1254 | new_track = 0; |
@@ -1274,10 +1277,6 @@ bool codec_request_next_track_callback(void) | |||
1274 | 1277 | ||
1275 | /* Codec requested track change (next track). */ | 1278 | /* Codec requested track change (next track). */ |
1276 | else { | 1279 | else { |
1277 | /* Wait for new track data. */ | ||
1278 | while (track_ridx == track_widx && filling) | ||
1279 | yield(); | ||
1280 | |||
1281 | if (!playlist_check(1)) | 1280 | if (!playlist_check(1)) |
1282 | return false; | 1281 | return false; |
1283 | last_peek_offset--; | 1282 | last_peek_offset--; |
@@ -1285,7 +1284,13 @@ bool codec_request_next_track_callback(void) | |||
1285 | if (++track_ridx >= MAX_TRACK) | 1284 | if (++track_ridx >= MAX_TRACK) |
1286 | track_ridx = 0; | 1285 | track_ridx = 0; |
1287 | 1286 | ||
1288 | if (track_ridx == track_widx && tracks[track_ridx].filerem == 0) { | 1287 | /* Wait for new track data (codectype 0 is invalid). When a correct |
1288 | codectype is set, we can assume that the filesize is correct. */ | ||
1289 | while (tracks[track_ridx].id3.codectype == 0 && filling | ||
1290 | && !ci.stop_codec) | ||
1291 | yield(); | ||
1292 | |||
1293 | if (tracks[track_ridx].filesize == 0) { | ||
1289 | logf("No more tracks"); | 1294 | logf("No more tracks"); |
1290 | new_track = 0; | 1295 | new_track = 0; |
1291 | return false; | 1296 | return false; |