]> sjero.net Git - linphone/commitdiff
support for wideband conferences
authorSimon Morlat <simon.morlat@linphone.org>
Mon, 24 Oct 2011 16:54:52 +0000 (18:54 +0200)
committerSimon Morlat <simon.morlat@linphone.org>
Mon, 24 Oct 2011 16:54:52 +0000 (18:54 +0200)
coreapi/conference.c
mediastreamer2

index 5b8a78d7e8a9aa8578657541fc740e029cc15613..767eaf07dae3fff157048a5e904c7ffa65d2df1f 100644 (file)
@@ -29,7 +29,9 @@
 
 static void conference_check_init(LinphoneConference *ctx){
        if (ctx->conf==NULL){
-               ctx->conf=ms_audio_conference_new();
+               MSAudioConferenceParams params;
+               params.samplerate=16000;
+               ctx->conf=ms_audio_conference_new(&params);
        }
 }
 
@@ -77,6 +79,14 @@ void linphone_call_remove_from_conf(LinphoneCall *call){
        call->endpoint=NULL;
 }
 
+static RtpProfile *make_dummy_profile(int samplerate){
+       RtpProfile *prof=rtp_profile_new("dummy");
+       PayloadType *pt=payload_type_clone(&payload_type_l16_mono);
+       pt->clock_rate=samplerate;
+       rtp_profile_set_payload(prof,0,pt);
+       return prof;
+}
+
 static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
        /*create a dummy audiostream in order to extract the local part of it */
        /* network address and ports have no meaning and are not used here. */
@@ -84,8 +94,10 @@ static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
        MSSndCard *playcard=lc->sound_conf.lsd_card ? 
                        lc->sound_conf.lsd_card : lc->sound_conf.play_sndcard;
        MSSndCard *captcard=lc->sound_conf.capt_sndcard;
+       const MSAudioConferenceParams *params=ms_audio_conference_get_params(conf->conf);
+       RtpProfile *prof=make_dummy_profile(params->samplerate);
        
-       audio_stream_start_full(st, &av_profile,
+       audio_stream_start_full(st, prof,
                                "127.0.0.1",
                                65000,
                                65001,
@@ -101,6 +113,8 @@ static void add_local_endpoint(LinphoneConference *conf,LinphoneCore *lc){
        conf->local_participant=st;
        conf->local_endpoint=ms_audio_endpoint_get_from_stream(st,FALSE);
        ms_audio_conference_add_member(conf->conf,conf->local_endpoint);
+       /*normally and exceptionnaly, the profile is no more accessed past this point*/
+       rtp_profile_destroy(prof);
 }
 
 float linphone_core_get_conference_local_input_volume(LinphoneCore *lc){
index 061bf62cc0d3112b1003c5567230ae2b35e8910b..2befd4c69cda862f32b1b7ee42db2a8606bae3b7 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 061bf62cc0d3112b1003c5567230ae2b35e8910b
+Subproject commit 2befd4c69cda862f32b1b7ee42db2a8606bae3b7