From afb00ef5a11cb78d0c62a23e4856289a5d475f25 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Sun, 17 Oct 2010 18:52:03 -0500 Subject: [PATCH] tweaks --- src/switch_ivr_async.c | 10 +++++----- src/switch_ivr_play_say.c | 8 ++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 7959d319ab..40214c423d 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -383,7 +383,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t * if (dmachine->last_matching_binding->callback) { s = dmachine->last_matching_binding->callback(&dmachine->match); - + switch(s) { case SWITCH_STATUS_CONTINUE: r = SWITCH_STATUS_SUCCESS; @@ -391,7 +391,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t * case SWITCH_STATUS_SUCCESS: break; default: - r = SWITCH_STATUS_NOTFOUND; + r = SWITCH_STATUS_BREAK; break; } } @@ -407,7 +407,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t * case SWITCH_STATUS_SUCCESS: break; default: - r = SWITCH_STATUS_NOTFOUND; + r = SWITCH_STATUS_BREAK; break; } @@ -422,7 +422,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t * r = SWITCH_STATUS_SUCCESS; } - if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS) { + if (r != SWITCH_STATUS_FOUND && r != SWITCH_STATUS_SUCCESS && r != SWITCH_STATUS_BREAK) { switch_set_string(dmachine->last_failed_digits, dmachine->digits); dmachine->match.match_digits = dmachine->last_failed_digits; @@ -439,7 +439,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_dmachine_ping(switch_ivr_dmachine_t * case SWITCH_STATUS_SUCCESS: break; default: - r = SWITCH_STATUS_NOTFOUND; + r = SWITCH_STATUS_BREAK; break; } diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index c99745d57c..b1b20ec6fb 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -1130,6 +1130,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess uint32_t pos = 0; switch_core_file_seek(fh, &pos, 0, SEEK_SET); switch_core_file_seek(fh, &pos, sample_start, SEEK_CUR); + switch_clear_flag(fh, SWITCH_FILE_SEEK); } if (switch_core_file_get_string(fh, SWITCH_AUDIO_COL_STR_TITLE, &p) == SWITCH_STATUS_SUCCESS) { @@ -1319,6 +1320,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess } } + fh->offset_pos += asis ? bread : bread / 2; + if (bread < framelen) { memset(abuf + bread, 255, framelen - bread); } @@ -1338,9 +1341,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess } switch_buffer_write(fh->audio_buffer, abuf, asis ? olen : olen * 2); olen = switch_buffer_read(fh->audio_buffer, abuf, framelen); + fh->offset_pos += olen / 2; + if (!asis) { olen /= 2; } + } if (done || olen <= 0) { @@ -1455,7 +1461,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess } more_data = 0; - write_frame.samples = (uint32_t) olen; if (asis) { @@ -1480,7 +1485,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess switch_change_sln_volume(write_frame.data, write_frame.datalen / 2, fh->vol); } - fh->offset_pos += write_frame.samples / 2; status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0); if (timeout_samples) {