From a696e4a743e0a3dc2ae80b5bb4a4d5b4beb540af Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 10 Sep 2012 14:13:07 -0500 Subject: [PATCH] sndfile tweak --- src/mod/formats/mod_sndfile/mod_sndfile.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mod/formats/mod_sndfile/mod_sndfile.c b/src/mod/formats/mod_sndfile/mod_sndfile.c index 42d2a71a71..e941524b1c 100644 --- a/src/mod/formats/mod_sndfile/mod_sndfile.c +++ b/src/mod/formats/mod_sndfile/mod_sndfile.c @@ -65,6 +65,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha size_t alt_len = 0; int rates[4] = { 8000, 16000, 32000, 48000 }; int i; + sf_count_t frames = 0; #ifdef WIN32 char ps = '\\'; #else @@ -209,12 +210,16 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha handle->speed = 0; handle->private_info = context; + if (handle->offset_pos) { + frames = handle->offset_pos; + handle->offset_pos = 0; + } + if (switch_test_flag(handle, SWITCH_FILE_WRITE_APPEND)) { - handle->pos = sf_seek(context->handle, 0, SEEK_END); + handle->pos = sf_seek(context->handle, frames, SEEK_END); } else if (switch_test_flag(handle, SWITCH_FILE_WRITE_OVER)) { - handle->pos = sf_seek(context->handle, 0, SEEK_SET); - } else { - sf_count_t frames = 0; + handle->pos = sf_seek(context->handle, frames, SEEK_SET); + } else { sf_command(context->handle, SFC_FILE_TRUNCATE, &frames, sizeof(frames)); }