提交 65631ed3 authored 作者: Brian West's avatar Brian West

Revert FS-7004 pending updated fixed for that issue from the original author.

上级 b368a755
...@@ -54,13 +54,10 @@ struct sndfile_context { ...@@ -54,13 +54,10 @@ struct sndfile_context {
typedef struct sndfile_context sndfile_context; typedef struct sndfile_context sndfile_context;
static switch_status_t sndfile_perform_open(sndfile_context *context, const char *path, const char *mask, int mode);
static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const char *path) static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const char *path)
{ {
sndfile_context *context; sndfile_context *context;
int mode = 0; int mode = 0;
const char *mask = "rb";
char *ext; char *ext;
struct format_map *map = NULL; struct format_map *map = NULL;
switch_status_t status = SWITCH_STATUS_SUCCESS; switch_status_t status = SWITCH_STATUS_SUCCESS;
...@@ -87,10 +84,8 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha ...@@ -87,10 +84,8 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha
if (switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) { if (switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) {
if (switch_test_flag(handle, SWITCH_FILE_WRITE_APPEND) || switch_test_flag(handle, SWITCH_FILE_WRITE_OVER) || handle->offset_pos) { if (switch_test_flag(handle, SWITCH_FILE_WRITE_APPEND) || switch_test_flag(handle, SWITCH_FILE_WRITE_OVER) || handle->offset_pos) {
mask = "ab+";
mode += SFM_RDWR; mode += SFM_RDWR;
} else { } else {
mask = "wb+";
mode += SFM_WRITE; mode += SFM_WRITE;
} }
} }
...@@ -186,7 +181,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha ...@@ -186,7 +181,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha
ldup = strdup(last); ldup = strdup(last);
switch_assert(ldup); switch_assert(ldup);
switch_snprintf(last, alt_len - (last - alt_path), "%d%s%s", handle->samplerate, SWITCH_PATH_SEPARATOR, ldup); switch_snprintf(last, alt_len - (last - alt_path), "%d%s%s", handle->samplerate, SWITCH_PATH_SEPARATOR, ldup);
if (sndfile_perform_open(context, alt_path, mask, mode) == SWITCH_STATUS_SUCCESS) { if ((context->handle = sf_open(alt_path, mode, &context->sfinfo))) {
path = alt_path; path = alt_path;
} else { } else {
/* Try to find the file at the highest rate possible if we can't find one that matches the exact rate. /* Try to find the file at the highest rate possible if we can't find one that matches the exact rate.
...@@ -194,7 +189,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha ...@@ -194,7 +189,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha
*/ */
for (i = 3; i >= 0; i--) { for (i = 3; i >= 0; i--) {
switch_snprintf(last, alt_len - (last - alt_path), "%d%s%s", rates[i], SWITCH_PATH_SEPARATOR, ldup); switch_snprintf(last, alt_len - (last - alt_path), "%d%s%s", rates[i], SWITCH_PATH_SEPARATOR, ldup);
if (sndfile_perform_open(context, alt_path, mask, mode) == SWITCH_STATUS_SUCCESS) { if ((context->handle = sf_open(alt_path, mode, &context->sfinfo))) {
path = alt_path; path = alt_path;
break; break;
} }
...@@ -203,7 +198,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha ...@@ -203,7 +198,7 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha
} }
if (!context->handle) { if (!context->handle) {
if (sndfile_perform_open(context, path, mask, mode) != SWITCH_STATUS_SUCCESS) { if ((context->handle = sf_open(path, mode, &context->sfinfo)) == 0) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Opening File [%s] [%s]\n", path, sf_strerror(context->handle)); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Opening File [%s] [%s]\n", path, sf_strerror(context->handle));
status = SWITCH_STATUS_GENERR; status = SWITCH_STATUS_GENERR;
goto end; goto end;
...@@ -241,20 +236,6 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha ...@@ -241,20 +236,6 @@ static switch_status_t sndfile_file_open(switch_file_handle_t *handle, const cha
return status; return status;
} }
static switch_status_t sndfile_perform_open(sndfile_context *context, const char *path, const char *mask, int mode)
{
FILE *fd = NULL;
fd = fopen(path, mask);
if (!fd) {
return SWITCH_STATUS_FALSE;
}
if ((context->handle = sf_open_fd(fileno(fd), mode, &context->sfinfo, SWITCH_TRUE)) == 0) {
fclose(fd);
return SWITCH_STATUS_FALSE;
}
return SWITCH_STATUS_SUCCESS;
}
static switch_status_t sndfile_file_truncate(switch_file_handle_t *handle, int64_t offset) static switch_status_t sndfile_file_truncate(switch_file_handle_t *handle, int64_t offset)
{ {
sndfile_context *context = handle->private_info; sndfile_context *context = handle->private_info;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论