From e90db0d768582db8e728caf58bba307ff5b81962 Mon Sep 17 00:00:00 2001 From: rucc Date: Thu, 9 Jan 2020 15:32:24 +0100 Subject: [PATCH] [core] fix: don't terminate file before max_samples returned if file buffer is considerably bigger than max_samples than keeping track of samples read instead of samples returned might result in a significantly shorter play --- src/switch_core_file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_file.c b/src/switch_core_file.c index 717233ce55..2d6680c74b 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -482,7 +482,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh, if (status != SWITCH_STATUS_SUCCESS || !rlen) { switch_set_flag_locked(fh, SWITCH_FILE_BUFFER_DONE); } else { - fh->samples_in += rlen; if (fh->real_channels != fh->channels && !switch_test_flag(fh, SWITCH_FILE_NOMUX)) { switch_mux_channels((int16_t *) fh->pre_buffer_data, rlen, fh->real_channels, fh->channels); } @@ -492,6 +491,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh, } rlen = switch_buffer_read(fh->pre_buffer, data, asis ? *len : *len * 2 * fh->channels); + fh->samples_in += rlen; *len = asis ? rlen : rlen / 2 / fh->channels; if (*len == 0) {