提交 0b75c853 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix MODFORM-11 (Again)

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9148 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 d011d38b
......@@ -248,6 +248,7 @@ static size_t decode_fd(shout_context_t *context, void *data, size_t bytes)
x = 0;
if (inlen < bytes) {
bytes = inlen;
done = 1;
}
......
......@@ -729,6 +729,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
const char *timer_name;
const char *prebuf;
const char *alt = NULL;
int eof = 0;
switch_size_t bread = 0;
switch_channel_pre_answer(channel);
......@@ -1008,20 +1010,28 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
memset(abuf, 0, framelen);
olen = ilen;
do_speed = 0;
} else if (fh->sp_audio_buffer && (switch_buffer_inuse(fh->sp_audio_buffer) > (switch_size_t) (framelen))) {
switch_buffer_read(fh->sp_audio_buffer, abuf, framelen);
olen = asis ? framelen : ilen;
} else if (fh->sp_audio_buffer && (eof || (switch_buffer_inuse(fh->sp_audio_buffer) > (switch_size_t) (framelen)))) {
if (!(bread = switch_buffer_read(fh->sp_audio_buffer, abuf, framelen))) {
break;
}
olen = asis ? bread : bread / 2;
do_speed = 0;
} else if (fh->audio_buffer && (switch_buffer_inuse(fh->audio_buffer) > (switch_size_t) (framelen))) {
switch_buffer_read(fh->audio_buffer, abuf, framelen);
olen = asis ? framelen : ilen;
} else if (fh->audio_buffer && (eof || (switch_buffer_inuse(fh->audio_buffer) > (switch_size_t) (framelen)))) {
if (!(bread = switch_buffer_read(fh->audio_buffer, abuf, framelen))) {
break;
}
olen = asis ? bread : bread / 2;
} else {
if (eof) {
break;
}
olen = FILE_STARTSAMPLES;
if (!asis) {
olen /= 2;
}
if (switch_core_file_read(fh, abuf, &olen) != SWITCH_STATUS_SUCCESS) {
break;
eof++;
continue;
}
switch_buffer_write(fh->audio_buffer, abuf, asis ? olen : olen * 2);
olen = switch_buffer_read(fh->audio_buffer, abuf, framelen);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论