From 7dc8b771686d268b8291b18651f562d2e53159e7 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Tue, 9 Oct 2007 18:45:28 +0200 Subject: [PATCH] Fix playback resuming --- apps/playback.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/apps/playback.c b/apps/playback.c index b49cd38a8..5cacdbea7 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -2754,6 +2754,7 @@ static bool audio_load_track(int offset, bool start_play, bool rebuffer) char *trackname; /* char msgbuf[80]; */ int fd; + int file_offset = 0; struct mp3entry id3; /* Stop buffer filling if there is no free track entries. @@ -2897,27 +2898,35 @@ static bool audio_load_track(int offset, bool start_play, bool rebuffer) return false; } - struct mp3entry *track_id3 = bufgetid3(tracks[track_widx].id3_hid); + struct mp3entry *track_id3; + + if (track_widx == track_ridx) + track_id3 = &curtrack_id3; + else if (track_widx == ((track_ridx + 1) & MAX_TRACK_MASK)) + track_id3 = &nexttrack_id3; + else + track_id3 = bufgetid3(tracks[track_widx].id3_hid); /* tracks[track_widx].start_pos = 0; */ set_filebuf_watermark(buffer_margin); track_id3->elapsed = 0; - - if (offset > 0) + if (offset > 0) { - switch (id3.codectype) { + switch (track_id3->codectype) { case AFMT_MPA_L1: case AFMT_MPA_L2: case AFMT_MPA_L3: + file_offset = offset; track_id3->offset = offset; - audio_set_elapsed(&id3); + audio_set_elapsed(track_id3); ci.curpos = offset; break; case AFMT_WAVPACK: + file_offset = offset; track_id3->offset = offset; - track_id3->elapsed = id3.length / 2; + track_id3->elapsed = track_id3->length / 2; ci.curpos = offset; break; @@ -2939,7 +2948,7 @@ static bool audio_load_track(int offset, bool start_play, bool rebuffer) //return audio_read_file(rebuffer); - tracks[track_widx].audio_hid = bufopen(trackname, offset, TYPE_AUDIO); + tracks[track_widx].audio_hid = bufopen(trackname, file_offset, TYPE_AUDIO); if (tracks[track_widx].audio_hid <= 0) return false; -- 2.11.4.GIT