void linphone_call_init_media_streams(LinphoneCall *call){ LinphoneCore *lc=call->core; SalMediaDescription *md=call->localdesc; AudioStream *audiostream; call->audiostream=audiostream=audio_stream_new(md->streams[0].port,linphone_core_ipv6_enabled(lc)); if (linphone_core_echo_limiter_enabled(lc)){ const char *type=lp_config_get_string(lc->config,"sound","el_type","mic"); if (strcasecmp(type,"mic")==0) audio_stream_enable_echo_limiter(audiostream,ELControlMic); else if (strcasecmp(type,"full")==0) audio_stream_enable_echo_limiter(audiostream,ELControlFull); } audio_stream_enable_gain_control(audiostream,TRUE); if (linphone_core_echo_cancellation_enabled(lc)){ int len,delay,framesize; const char *statestr=lp_config_get_string(lc->config,"sound","ec_state",NULL); len=lp_config_get_int(lc->config,"sound","ec_tail_len",0); delay=lp_config_get_int(lc->config,"sound","ec_delay",0); framesize=lp_config_get_int(lc->config,"sound","ec_framesize",0); audio_stream_set_echo_canceller_params(audiostream,len,delay,framesize); if (statestr && audiostream->ec){ ms_filter_call_method(audiostream->ec,MS_ECHO_CANCELLER_SET_STATE_STRING,(void*)statestr); } } audio_stream_enable_automatic_gain_control(audiostream,linphone_core_agc_enabled(lc)); { int enabled=lp_config_get_int(lc->config,"sound","noisegate",0); audio_stream_enable_noise_gate(audiostream,enabled); } if (lc->a_rtp) rtp_session_set_transports(audiostream->session,lc->a_rtp,lc->a_rtcp); call->audiostream_app_evq = ortp_ev_queue_new(); rtp_session_register_event_queue(audiostream->session,call->audiostream_app_evq); #ifdef VIDEO_ENABLED if ((lc->video_conf.display || lc->video_conf.capture) && md->streams[1].port>0){ call->videostream=video_stream_new(md->streams[1].port,linphone_core_ipv6_enabled(lc)); if( lc->video_conf.displaytype != NULL) video_stream_set_display_filter_name(call->videostream,lc->video_conf.displaytype); video_stream_set_event_callback(call->videostream,video_stream_event_cb, call); if (lc->v_rtp) rtp_session_set_transports(call->videostream->session,lc->v_rtp,lc->v_rtcp); call->videostream_app_evq = ortp_ev_queue_new(); rtp_session_register_event_queue(call->videostream->session,call->videostream_app_evq); #ifdef TEST_EXT_RENDERER video_stream_set_render_callback(call->videostream,rendercb,NULL); #endif } #else call->videostream=NULL; #endif }
static void create_video_stream(video_stream_tester_t *vst, int payload_type) { vst->vs = video_stream_new2(vst->local_ip, vst->local_rtp, vst->local_rtcp); vst->vs->staticimage_webcam_fps_optimization = FALSE; vst->local_rtp = rtp_session_get_local_port(vst->vs->ms.sessions.rtp_session); vst->local_rtcp = rtp_session_get_local_rtcp_port(vst->vs->ms.sessions.rtp_session); reset_stats(&vst->stats); rtp_session_set_multicast_loopback(vst->vs->ms.sessions.rtp_session, TRUE); vst->stats.q = ortp_ev_queue_new(); rtp_session_register_event_queue(vst->vs->ms.sessions.rtp_session, vst->stats.q); video_stream_set_event_callback(vst->vs, video_stream_event_cb, vst); if (vst->vconf) { PayloadType *pt = rtp_profile_get_payload(&rtp_profile, payload_type); CU_ASSERT_PTR_NOT_NULL_FATAL(pt); pt->normal_bitrate = vst->vconf->required_bitrate; video_stream_set_fps(vst->vs, vst->vconf->fps); video_stream_set_sent_video_size(vst->vs, vst->vconf->vsize); } vst->payload_type = payload_type; }