diff --git a/src/include/switch_core.h b/src/include/switch_core.h index e783dbd767..6e384502ff 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -1574,7 +1574,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_init_with_bitrate(switch_codec uint32_t bitrate, uint32_t flags, const switch_codec_settings_t *codec_settings, switch_memory_pool_t *pool); -SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, switch_codec_t *new_codec, switch_memory_pool_t *pool); +SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, switch_codec_t *new_codec, + const switch_codec_settings_t *codec_settings, switch_memory_pool_t *pool); SWITCH_DECLARE(switch_status_t) switch_core_codec_parse_fmtp(const char *codec_name, const char *fmtp, uint32_t rate, switch_codec_fmtp_t *codec_fmtp); SWITCH_DECLARE(switch_status_t) switch_core_codec_reset(switch_codec_t *codec); diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index ef22e7714f..f766704059 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -616,7 +616,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_reset(switch_codec_t *codec) } -SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, switch_codec_t *new_codec, switch_memory_pool_t *pool) +SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, switch_codec_t *new_codec, + const switch_codec_settings_t *codec_settings, switch_memory_pool_t *pool) { switch_status_t status; @@ -643,8 +644,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_copy(switch_codec_t *codec, sw new_codec->fmtp_in = switch_core_strdup(new_codec->memory_pool, codec->fmtp_in); } - new_codec->implementation->init(new_codec, new_codec->flags, NULL); - + new_codec->implementation->init(new_codec, new_codec->flags, codec_settings); + switch_mutex_init(&new_codec->mutex, SWITCH_MUTEX_NESTED, new_codec->memory_pool); return SWITCH_STATUS_SUCCESS; diff --git a/src/switch_core_io.c b/src/switch_core_io.c index cb056adb73..4c39bbbb42 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -527,7 +527,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi if (!switch_core_codec_ready(&session->bug_codec) && switch_core_codec_ready(read_frame->codec)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setting BUG Codec %s:%d\n", read_frame->codec->implementation->iananame, read_frame->codec->implementation->ianacode); - switch_core_codec_copy(read_frame->codec, &session->bug_codec, NULL); + switch_core_codec_copy(read_frame->codec, &session->bug_codec, NULL, NULL); if (!switch_core_codec_ready(&session->bug_codec)) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "%s Error setting BUG codec %s!\n", switch_core_session_get_name(session), read_frame->codec->implementation->iananame);