diff options
| author | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-08 20:01:06 +0000 |
|---|---|---|
| committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-08 20:01:06 +0000 |
| commit | 5d9e0536ea8b4caea8236d74e1ed9532ef151517 (patch) | |
| tree | 711d29eafe208ccb16a880e4a546971865f86a75 /apps | |
| parent | a5ef8f0c6f348e55389e66b8637484f482f8f6f1 (diff) | |
| download | rockbox-5d9e0536ea8b4caea8236d74e1ed9532ef151517.zip rockbox-5d9e0536ea8b4caea8236d74e1ed9532ef151517.tar.gz rockbox-5d9e0536ea8b4caea8236d74e1ed9532ef151517.tar.bz2 rockbox-5d9e0536ea8b4caea8236d74e1ed9532ef151517.tar.xz | |
Some playback fixes.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7076 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/playback.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/apps/playback.c b/apps/playback.c index c053bc1..03b286c 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -922,6 +922,8 @@ bool audio_load_track(int offset, bool start_play, int peek_offset) /* Get track metadata if we don't already have it. */ if (!tracks[track_widx].taginfo_ready) { if (!get_metadata(&tracks[track_widx],fd,trackname,v1first)) { + logf("Metadata error!"); + tracks[track_widx].filesize = 0; close(fd); return false; } @@ -973,8 +975,10 @@ bool audio_load_track(int offset, bool start_play, int peek_offset) copy_n = MIN(size - i, copy_n); copy_n = MIN((int)fill_bytesleft, copy_n); rc = read(fd, &codecbuf[buf_widx], copy_n); - if (rc <= 0) { + if (rc < copy_n) { logf("File error!"); + tracks[track_widx].filesize = 0; + tracks[track_widx].filerem = 0; close(fd); return false; } @@ -1047,6 +1051,7 @@ void audio_play_start(int offset) } else { logf("Failure"); } + pcm_set_boost_mode(false); } @@ -1127,11 +1132,12 @@ void initialize_buffer_fill(void) fill_bytesleft = codecbuflen - codecbufused; cur_ti->start_pos = ci.curpos; + pcm_set_boost_mode(true); + if (filling) return ; filling = true; - pcm_set_boost_mode(true); /* Calculate real track count after throwing away old tracks. */ cur_idx = track_ridx; @@ -1337,8 +1343,10 @@ bool codec_request_next_track_callback(void) yield(); if (tracks[track_ridx].filesize == 0) { - logf("No more tracks"); + logf("No more tracks [2]"); + ci.stop_codec = true; new_track = 0; + queue_post(&codec_queue, CODEC_LOAD, 0); return false; } } @@ -1346,9 +1354,10 @@ bool codec_request_next_track_callback(void) ci.reload_codec = false; if (cur_ti->id3.codectype != tracks[track_ridx].id3.codectype) { + logf("New codec:%d/%d", cur_ti->id3.codectype, + tracks[track_ridx].id3.codectype); if (--track_ridx < 0) track_ridx = MAX_TRACK-1; - logf("New codec"); new_track = 0; return false; } @@ -1386,7 +1395,7 @@ static void initiate_track_change(int peek_index) new_track = peek_index; ci.reload_codec = true; - + /* Detect if disk is spinning.. */ if (filling) { ci.stop_codec = true; @@ -1396,8 +1405,8 @@ static void initiate_track_change(int peek_index) else if (!pcm_crossfade_init()) pcm_flush_audio(); - else - codec_track_changed(); + + codec_track_changed(); } void audio_thread(void) @@ -1594,8 +1603,7 @@ void audio_play(int offset) ci.stop_codec = true; if (!pcm_crossfade_init()) pcm_flush_audio(); - else - codec_track_changed(); + codec_track_changed(); pcm_play_pause(true); paused = false; @@ -1813,7 +1821,7 @@ void test_buffer_event(struct mp3entry *id3, bool last_track) (void)id3; (void)last_track; - logf("be:%d%s", last_track, id3->title); + logf("be:%d%s", last_track, id3->path); } void test_unbuffer_event(struct mp3entry *id3, bool last_track) @@ -1821,7 +1829,7 @@ void test_unbuffer_event(struct mp3entry *id3, bool last_track) (void)id3; (void)last_track; - logf("ube:%d%s", last_track, id3->title); + logf("ube:%d%s", last_track, id3->path); } void audio_init(void) |