#define LINPHONE_RTCP_SDES_TOOL "Linphone-" LINPHONE_VERSION
+static bool_t linphone_call_sound_resources_available(LinphoneCall *call){
+ LinphoneCore *lc=call->core;
+ LinphoneCall *current=linphone_core_get_current_call(lc);
+ return !linphone_core_is_in_conference(lc) &&
+ (current==NULL || current==call);
+}
+
static void linphone_call_start_audio_stream(LinphoneCall *call, const char *cname, bool_t muted, bool_t send_ringbacktone, bool_t use_arc){
LinphoneCore *lc=call->core;
int jitt_comp=lc->rtp_conf.audio_jitt_comp;
/* first create the graph without soundcard resources*/
captcard=playcard=NULL;
}
+ if (!linphone_call_sound_resources_available(call)){
+ ms_message("Sound resources are used by another call, not using soundcard.");
+ captcard=playcard=NULL;
+ }
use_ec=captcard==NULL ? FALSE : linphone_core_echo_cancellation_enabled(lc);
audio_stream_enable_adaptive_bitrate_control(call->audiostream,use_arc);
linphone_core_preempt_sound_resources(lc);
ms_message("Resuming call %p",call);
}
+ update_local_media_description(lc,the_call,&call->localdesc);
+ sal_call_set_local_media_description(call->op,call->localdesc);
sal_media_description_set_dir(call->localdesc,SalStreamSendRecv);
- if (call->params.in_conference) subject="Resuming conference";
+ if (call->params.in_conference && !call->current_params.in_conference) subject="Conference";
if(sal_call_update(call->op,subject) != 0){
return -1;
}
void linphone_call_add_to_conf(LinphoneCall *call);
void linphone_call_remove_from_conf(LinphoneCall *call);
void linphone_core_conference_check_uninit(LinphoneConference *ctx);
+bool_t linphone_core_sound_resources_available(LinphoneCore *lc);
#define HOLD_OFF (0)
#define HOLD_ON (1)