summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/playback.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/apps/playback.c b/apps/playback.c
index 99de8ad..2cf07f4 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1590,17 +1590,11 @@ static void initialize_buffer_fill(bool start_play)
/* Recalculate remaining bytes to buffer, but always leave extra
* data for the currently playing codec to seek back into */
size_t buf_bytesleft = filebuflen - filebufused;
+ size_t subtract =
+ MIN(MIN(AUDIO_REBUFFER_GUESS_SIZE, ci.curpos), buf_bytesleft);
- if (buf_bytesleft > AUDIO_REBUFFER_GUESS_SIZE)
- fill_bytesleft = buf_bytesleft - AUDIO_REBUFFER_GUESS_SIZE;
- else
- fill_bytesleft = 0;
-
- if (ci.curpos > AUDIO_REBUFFER_GUESS_SIZE)
- tracks[track_ridx].start_pos =
- ci.curpos - AUDIO_REBUFFER_GUESS_SIZE;
- else
- tracks[track_ridx].start_pos = 0;
+ fill_bytesleft = buf_bytesleft - subtract;
+ tracks[track_ridx].start_pos = ci.curpos - subtract;
}
logf("Starting buffer fill");