diff --git a/src/c-wrapper/api/c-call.cpp b/src/c-wrapper/api/c-call.cpp index 1208cb20d..6d890e89d 100644 --- a/src/c-wrapper/api/c-call.cpp +++ b/src/c-wrapper/api/c-call.cpp @@ -1102,14 +1102,7 @@ const bctbx_list_t *linphone_call_get_callbacks_list(const LinphoneCall *call) { } void linphone_call_set_params (LinphoneCall *call, const LinphoneCallParams *params) { -#if 0 - if ( call->state == LinphoneCallOutgoingInit || call->state == LinphoneCallIncomingReceived){ - _linphone_call_set_new_params(call, params); - } - else { - ms_error("linphone_call_set_params() invalid state %s to call this function", linphone_call_state_to_string(call->state)); - } -#endif + L_GET_CPP_PTR_FROM_C_OBJECT(call)->setParams(L_GET_CPP_PTR_FROM_C_OBJECT(params)); } const LinphoneCallParams *linphone_call_get_params (LinphoneCall *call) { diff --git a/src/call/call.cpp b/src/call/call.cpp index 0463764e8..7f82b6d01 100644 --- a/src/call/call.cpp +++ b/src/call/call.cpp @@ -525,6 +525,11 @@ void Call::setNextVideoFrameDecodedCallback (LinphoneCallCbFunc cb, void *user_d d->onResetFirstVideoFrameDecoded(); } +void Call::setParams (const MediaSessionParams *msp) { + L_D(); + static_cast(d->getActiveSession().get())->setParams(msp); +} + void Call::setSpeakerVolumeGain (float value) { L_D(); static_cast(d->getActiveSession().get())->setSpeakerVolumeGain(value); diff --git a/src/call/call.h b/src/call/call.h index 85c3dfd5f..980d46d20 100644 --- a/src/call/call.h +++ b/src/call/call.h @@ -100,6 +100,7 @@ public: void setMicrophoneVolumeGain (float value); void setNativeVideoWindowId (void *id); void setNextVideoFrameDecodedCallback (LinphoneCallCbFunc cb, void *user_data); + void setParams (const MediaSessionParams *msp); void setSpeakerVolumeGain (float value); protected: diff --git a/src/conference/session/media-session.cpp b/src/conference/session/media-session.cpp index bd6bb9f82..6cdbb1561 100644 --- a/src/conference/session/media-session.cpp +++ b/src/conference/session/media-session.cpp @@ -4826,6 +4826,14 @@ void MediaSession::setNativeVideoWindowId (void *id) { #endif } +void MediaSession::setParams (const MediaSessionParams *msp) { + L_D(); + if ((d->state == LinphoneCallOutgoingInit) || (d->state == LinphoneCallIncomingReceived)) + d->setParams(msp ? new MediaSessionParams(*msp) : nullptr); + else + lError() << "MediaSession::setParams(): Invalid state %s", linphone_call_state_to_string(d->state); +} + void MediaSession::setSpeakerVolumeGain (float value) { L_D(); if (d->audioStream) diff --git a/src/conference/session/media-session.h b/src/conference/session/media-session.h index e8021265a..046101931 100644 --- a/src/conference/session/media-session.h +++ b/src/conference/session/media-session.h @@ -96,6 +96,7 @@ public: void setAuthenticationTokenVerified (bool value); void setMicrophoneVolumeGain (float value); void setNativeVideoWindowId (void *id); + void setParams (const MediaSessionParams *msp); void setSpeakerVolumeGain (float value); private: