diff --git a/src/include/switch_core.h b/src/include/switch_core.h index 2fc783e742..48f25d8d94 100644 --- a/src/include/switch_core.h +++ b/src/include/switch_core.h @@ -1005,6 +1005,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(_In_ switch SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(_In_ switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); +SWITCH_DECLARE(switch_status_t) switch_core_session_set_read_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp); +SWITCH_DECLARE(switch_status_t) switch_core_session_set_write_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp); +SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_read_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp); +SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_write_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp); + /*! \brief Reset the buffers and resampler on a session \param session the session to reset diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index dc261e76ba..728df586b5 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2073,6 +2073,8 @@ switch_status_t sofia_glue_tech_set_codec(private_object_t *tech_pvt, int force) tech_pvt->read_impl = *tech_pvt->read_codec.implementation; tech_pvt->write_impl = *tech_pvt->write_codec.implementation; + switch_core_session_set_read_impl(tech_pvt->session, tech_pvt->read_codec.implementation); + switch_core_session_set_write_impl(tech_pvt->session, tech_pvt->write_codec.implementation); if (switch_rtp_ready(tech_pvt->rtp_session)) { switch_assert(tech_pvt->read_codec.implementation); diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index f95f9b9521..abfb778bb3 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -212,6 +212,31 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_video_write_impl(switch_ } +SWITCH_DECLARE(switch_status_t) switch_core_session_set_read_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp) +{ + session->read_impl =*impp; + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_DECLARE(switch_status_t) switch_core_session_set_write_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp) +{ + session->write_impl = *impp; + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_read_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp) +{ + session->video_read_impl = *impp; + return SWITCH_STATUS_SUCCESS; +} + +SWITCH_DECLARE(switch_status_t) switch_core_session_set_video_write_impl(switch_core_session_t *session, const switch_codec_implementation_t *impp) +{ + session->video_write_impl = *impp; + return SWITCH_STATUS_SUCCESS; +} + + SWITCH_DECLARE(switch_status_t) switch_core_session_set_write_codec(switch_core_session_t *session, switch_codec_t *codec) { switch_event_t *event;