linphone 分析2 接电话的过程1(mediastream角度解析)

来源:互联网 发布:js隐藏显示div 编辑:程序博客网 时间:2024/05/29 04:01

做楼宇对讲的项目,需求电话来了直接看到视频,接听后产生语音。于是研究了下liphone接电话的过程

函数调用为:


lpc_cmd_answer       

接到电话以后,answer命令接听


linphone_core_accept_call



linphone_core_accept_call_with_params


if (call==NULL){
//if just one call is present answer the only one ...
if(linphone_core_get_calls_nb (lc) != 1)
return -1;
else
call = (LinphoneCall*)linphone_core_get_calls(lc)->data;
}

先拿到这个call,然后各种检测


if (lc->ringstream!=NULL) {
ms_message("stop ringing");
ring_stop(lc->ringstream);
ms_message("ring stopped");
lc->ringstream=NULL;
was_ringing=TRUE;
}
if (call->ringing_beep){
linphone_core_stop_dtmf(lc);
call->ringing_beep=FALSE;
}

关闭振铃


new_md=sal_call_get_final_media_description(call->op);

拿sdp的协商


linphone_core_update_streams


if (lc->ringstream!=NULL){
ring_stop(lc->ringstream);
lc->ringstream=NULL;
}

再次确定铃声关闭


linphone_call_start_media_streams


linphone_call_start_audio_stream(call,cname,all_inputs_muted,send_ringbacktone,use_arc);

audio_stream_start_full()

音频filter的连接和开始


linphone_call_start_video_stream(call,cname,all_inputs_muted);

video_stream_start()

视频filter的连接和开始





这个过程是从mediastream角度解析去分析 linphone接电话的过程 看它如何调用到filter的连接 和开始。

下面还将以sip库和rtp库的角度分析接电话的过程。

0 0