return break in mod_sndfile when seek returns failure
This commit is contained in:
parent
4cf5842836
commit
564dc7e493
|
@ -242,16 +242,23 @@ static switch_status_t sndfile_file_close(switch_file_handle_t *handle)
|
||||||
static switch_status_t sndfile_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence)
|
static switch_status_t sndfile_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence)
|
||||||
{
|
{
|
||||||
sndfile_context *context = handle->private_info;
|
sndfile_context *context = handle->private_info;
|
||||||
|
sf_count_t count;
|
||||||
|
switch_status_t r = SWITCH_STATUS_SUCCESS;
|
||||||
|
|
||||||
if (!handle->seekable) {
|
if (!handle->seekable) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "File is not seekable\n");
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "File is not seekable\n");
|
||||||
return SWITCH_STATUS_NOTIMPL;
|
return SWITCH_STATUS_NOTIMPL;
|
||||||
}
|
}
|
||||||
|
|
||||||
*cur_sample = (unsigned int) sf_seek(context->handle, samples, whence);
|
if ((count = sf_seek(context->handle, samples, whence)) == ((sf_count_t) -1)) {
|
||||||
handle->pos = *cur_sample;
|
r = SWITCH_STATUS_BREAK;
|
||||||
|
count = sf_seek(context->handle, -1, SEEK_END);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
}
|
||||||
|
|
||||||
|
*cur_sample = (unsigned int) count;
|
||||||
|
handle->pos = *cur_sample;
|
||||||
|
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static switch_status_t sndfile_file_read(switch_file_handle_t *handle, void *data, size_t *len)
|
static switch_status_t sndfile_file_read(switch_file_handle_t *handle, void *data, size_t *len)
|
||||||
|
|
Loading…
Reference in New Issue