logo头像
Snippet 博客主题

linphone

无意间发现 开源中国中有人回复 看见 以前的文章
就想整理下

这是一份 2014年 研究视频通话 时候调研 的 文章 一直在有道笔记

linphone

1 登陆 --- SetupActivity-saveCreatedAccount
- native void setDefaultProxyConfig(long nativePtr,long proxyCfgNativePtr);

2 电话 --- ContactFragment-联系人
LinphoneActivity.instance().setAddresGoToDialerAndCall(to, contact.getName(), contact.getPhotoUri());
-- CallManager.getInstance().inviteAddress(lAddress, false, isLowBandwidthConnection);
- native Object inviteAddressWithParams(long nativePtrLc,long to, long nativePtrParam);

LinphoneActivity.instance().setAddresGoToDialerAndCall(to, contact.getName(), contact.getPhotoUri());
50002
50002
null

newOutgoingCall (String to, String displayName)
50002
null

3 电话监听 ---
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();

lc.addListener(mListener);
LinphoneCoreListenerBase
callState
refreshCallList

声音 传输—???

4 视频电话
LinphoneManager.getInstance().addVideo();
— native void enableCamera(long nativePtr, boolean enabled);

  • native int updateCall(long ptrLc, long ptrCall, long ptrParams);

接受/取消 InCallActivity.instance().acceptCallUpdate(true);
-- nativevoid acceptCallUpdate(long nativePtr, long aCall, long params);

AndroidVideoWindowImpl (SurfaceView renderingSurface, SurfaceView previewSurface, VideoWindowListener listener)

VideoWindowListener
—void onVideoRenderingSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface);
LinphoneManager.getLc().setVideoWindow(vw);
mVideoView = surface;
—void onVideoRenderingSurfaceDestroyed(AndroidVideoWindowImpl vw);
—void onVideoPreviewSurfaceReady(AndroidVideoWindowImpl vw, SurfaceView surface);
mCaptureView = surface;
LinphoneManager.getLc().setPreviewWindow(mCaptureView);
—void onVideoPreviewSurfaceDestroyed(AndroidVideoWindowImpl vw);

native void setPreviewWindowId(long nativePtr, Object wid);
LinphoneService

switchCamera
LinphoneManager.getLc().setVideoDevice(videoDeviceId);
CallManager.getInstance().updateCall();

//
LinphoneManager.getLc().setPreviewWindow(mCaptureView);

AndroidVideoApi9JniWrapper

- startRecording - 
onPreviewFrame - AndroidVideoApi5JniWrapper.putImage(nativePtr, data);
          nativevoid putImage(long nativePtr, byte[] buffer);  

Java_org_linphone_mediastream_video_capture_AndroidVideoApi5JniWrapper_putImage
AndroidReaderContext
camera.addCallbackBuffer(data);

聊天
displayChat
ChatFragment
sendTextMessage - native void sendChatMessage(long ptr, Object message, long messagePtr);

C call java
1 — globalStateClass = (jclass)env->NewGlobalRef(env->FindClass(“org/linphone/core/LinphoneCore$GlobalState”));

账户
1 创建 登陆

GenericLoginFragment
logIn (String username, String password, String domain, boolean sendEcCalibrationResult)
50001
50001
50001@192.168.100.102
false

saveCreatedAccount
String identity = “sip:” + username + “@” + domain;
sip:50001@50001@192.168.100.102

AccountBuilder builder = new AccountBuilder(LinphoneManager.getLc())
.setUsername(username)50001
.setDomain(domain) 50001@192.168.100.102
.setPassword(password);50001

saveNewAccount
String identity = “sip:” + tempUsername + “@” + tempDomain; -sip:50001@50001@192.168.100.102

proxy += tempDomain; - sip:50001@192.168.100.102

addProxyConfig

支付宝打赏 微信打赏

打赏