diff options
author | Brandon Low <lostlogic@rockbox.org> | 2006-10-23 12:44:11 +0000 |
---|---|---|
committer | Brandon Low <lostlogic@rockbox.org> | 2006-10-23 12:44:11 +0000 |
commit | 500a761cb042ffd23a808c7d62d17809d3f1e543 (patch) | |
tree | fc97e3e968ece9594c27e5fab71d8e17c25d9b43 | |
parent | 4a4c67f660ffd5ab3aeada45562a09afb880a4f3 (diff) | |
download | rockbox-500a761cb042ffd23a808c7d62d17809d3f1e543.tar.gz rockbox-500a761cb042ffd23a808c7d62d17809d3f1e543.zip |
Last fix was wrong, I did the math this time, should fix more buffering edges
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11315 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/playback.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/apps/playback.c b/apps/playback.c index a74eee1dbd..9e95c4fb00 100644 --- a/apps/playback.c +++ b/apps/playback.c | |||
@@ -2154,30 +2154,30 @@ static bool audio_read_file(size_t minimum) | |||
2154 | break; | 2154 | break; |
2155 | } | 2155 | } |
2156 | 2156 | ||
2157 | tracks[track_widx].available += rc; | ||
2158 | tracks[track_widx].filerem -= rc; | ||
2159 | |||
2160 | /* How much of the playing track did we overwrite */ | 2157 | /* How much of the playing track did we overwrite */ |
2161 | if (buf_widx == CUR_TI->buf_idx) | 2158 | if (buf_widx == CUR_TI->buf_idx) |
2162 | { | 2159 | { |
2163 | /* Special handling; zero or full overlap? */ | 2160 | /* Special handling; zero or full overlap? */ |
2164 | if (CUR_TI->filerem) | 2161 | if (track_widx == track_ridx && CUR_TI->available == 0) |
2165 | overlap = rc; | 2162 | overlap = 0; |
2166 | else | 2163 | else |
2167 | overlap=0; | 2164 | overlap = rc; |
2168 | } | 2165 | } |
2169 | else | 2166 | else |
2170 | overlap = RINGBUF_ADD_CROSS(buf_widx,rc,CUR_TI->buf_idx); | 2167 | overlap = RINGBUF_ADD_CROSS(buf_widx,rc,CUR_TI->buf_idx); |
2171 | 2168 | ||
2172 | /* Advance buffer */ | 2169 | /* Advance buffer */ |
2173 | buf_widx = RINGBUF_ADD(buf_widx, rc); | 2170 | buf_widx = RINGBUF_ADD(buf_widx, rc); |
2171 | tracks[track_widx].available += rc; | ||
2172 | tracks[track_widx].filerem -= rc; | ||
2174 | 2173 | ||
2175 | /* If we write into the playing track, adjust it's buffer info */ | 2174 | /* If we write into the playing track, adjust it's buffer info */ |
2176 | if (overlap > 0 && CUR_TI->available != 0) { | 2175 | if (overlap > 0) |
2176 | { | ||
2177 | CUR_TI->buf_idx += overlap; | 2177 | CUR_TI->buf_idx += overlap; |
2178 | CUR_TI->start_pos += overlap; | 2178 | CUR_TI->start_pos += overlap; |
2179 | } | 2179 | } |
2180 | 2180 | ||
2181 | /* For a rebuffer, fill at least this minimum */ | 2181 | /* For a rebuffer, fill at least this minimum */ |
2182 | if (minimum > (unsigned)rc) | 2182 | if (minimum > (unsigned)rc) |
2183 | minimum -= rc; | 2183 | minimum -= rc; |