diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 952b345e67..bfc8f1cd33 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -1101,6 +1101,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Write Buffer Failed!\n"); goto error; } + + /* Need to retrain the recording data */ + switch_core_media_bug_flush_all(session); } if (!(switch_buffer_write(session->raw_write_buffer, write_frame->data, write_frame->datalen))) { diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index 0397aa666b..313552124f 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -126,6 +126,10 @@ SWITCH_DECLARE(void) switch_core_media_bug_flush(switch_media_bug_t *bug) switch_buffer_zero(bug->raw_write_buffer); switch_mutex_unlock(bug->write_mutex); } + + bug->record_frame_size = 0; + bug->record_pre_buffer_count = 0; + } SWITCH_DECLARE(void) switch_core_media_bug_inuse(switch_media_bug_t *bug, switch_size_t *readp, switch_size_t *writep)