csipsimple学习笔记

          

       分类:            网络技术            Android            2012-07-27 16:35    1736人阅读    评论(0)    收藏    举报    

1、注册流程:

涉及函数见下表。调用顺序自上而下。

函数名

所在文件

功能

addAccount PjSipService.java
acc_add pjsua.java
Java_org_pjsip_pjsua_pjsuaJNI_acc_1add pjsua_wrap.cpp
pjsua_acc_add pjsua_acc.c
pjsua_acc_set_registration pjsua_acc.c
pjsip_regc_register sip_reg.c 构造sip注册消息
pjsip_regc_send sip_reg.c 发送sip注册消息
pjsip_endpt_send_request sip_util_statefull.c 发送sip注册消息

 

2、回调函数映射流程:

pjsip 是通过调用 C 层 pjsua_config 结构体中的 cb 成员来实现回调。下表以 cb 中的 on_call_state 回调函数为例说明映射流程。调用顺序自下而上。

函数名

所在文件

所属类或结构体

cb.on_call_state pjsua.h pjsua_config
on_call_state_wrapper pjsua_wrap.cpp wrapper_callback_struct
on_call_state pjsua_wrap.cpp SwigDirector_Callback
on_call_state UAStateReceiver.java UAStateReceiver

将 cb 指向 wrapper_callback_struct 是在 Java_org_pjsip_pjsua_pjsuaJNI_pjsua_1config_1cb_1set 中完成的,具体执行代码为:

[cpp] view plaincopy

  1. if (arg1) (arg1)->cb = *arg2;  

JNI 映射 java 方法是在 Java_org_pjsip_pjsua_pjsuaJNI_swig_1module_1init 中完成的,具体执行代码为:

[cpp] view plaincopy

  1. Swig::director_methids[i] = jenv->GetStaticMethodID(jcls, methods[i].method, methods[i].signature);  


3、声音采集和播放

功能 实现函数 所在文件 调用函数
注册 pjmedia_aud_register_factory pjsua_jni_addons.c csipsimple_init
初始化 android_create_stream android_jni_dev.cpp
声音采集 AndroidRecorderCallback android_jni_dev.cpp strm_start
声音播放 AndroidTrackCallback android_jni_dev.cpp strm_start


你可能感兴趣的:(csipsimple学习笔记)