summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2005-07-05 15:19:22 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2005-07-05 15:19:22 +0000
commitd6e79424264147e52f70d9ed34b80e34a9d3c23b (patch)
tree712837474fee23ce550636480f797c45e3829b4c /apps
parent2d79df5086a3c632ef09bc273c201a8443a7c4a2 (diff)
downloadrockbox-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.c2
-rw-r--r--apps/playback.c23
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;