diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 7a16363069..dd38b94af7 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1075,7 +1075,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_answer(switch_core_session_t break; } } - write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2); + write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2 * ringback.fh.channels); } else if (ringback.audio_buffer) { if ((write_frame.datalen = (uint32_t) switch_buffer_read_loop(ringback.audio_buffer, write_frame.data, @@ -3188,7 +3188,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess break; } } - write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2); + write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2 ( ringback.fh.channels); write_frame.samples = (uint32_t) olen; } else if (ringback.audio_buffer) { diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index ec1f66f125..148b6ed3eb 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -1861,7 +1861,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_silence(switch_core_session_ } write_frame.samples = (uint32_t) olen; - write_frame.datalen = (uint32_t) (olen * sizeof(int16_t)); + write_frame.datalen = (uint32_t) (olen * sizeof(int16_t) * fh.channels); if ((status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0)) != SWITCH_STATUS_SUCCESS) { break; }