Webrtc之peerconnection_client详解(一)

Webrtc之peerconnection_client详解(一)前面我们跑了webrtc的peerconnection_client的demo,体验了webrtc的视频通话效果,本文从代码框架上梳理该demo

欢迎大家来到IT世界,在知识的湖畔探索吧!

前面我们跑了webrtc的peerconnection_client的demo,体验了webrtc的视频通话效果,本文从代码框架上梳理该demo的结构,为后面深入学习webrtc协议做好准备。

Webrtc之peerconnection_client详解(一)

一、代码结构
从文件结构上,该demo分为:main.cc,main_wnd.cc.,conductor.cc,peer_connection_client.cc四个文件。其中:
main.cc:main函数的入口,负责网络,窗口,ssl等初始化相关工作,window窗口消息循环。
main_wnd:windows窗口事件处理,视频和图形渲染等。
Peer_connection_clinent:负责与信令服务器,peer客户端进行交互等
conductor.cc:是一个控制模块,负责与main_wnd和Peer_connection_client进行交互。同时继承多个xxx_Observer,会产生很多底层回调事件,通知main_wnd和Peer_connection_client刷新某个动作。
二、基本框架
在这里其实用到一个设计模式,即观察者模式。
Conductor 继承以下几个抽象类:webrtc::PeerConnectionObserver,webrtc::CreateSessionDescriptionObserver,webrtc::PeerConnectionClientObserver。xxx_Observer本身就是一个观察者,当观察的目标发生变化时,就会通知xxx_Observer产生一个事件回调。而Conductor继承xxx_Observer,所以Conductor也是一个观察者身份。因此Conductor会存在很多On_XXXX相关的实际回调。同时conductor和main_wnd,Peer_connection_client 也是一个观察者模式。Conductor 监听到事件,会通知main_wnd和Peer_connection_client进行相关界面更新或者与peer的进一步交互,在这个模式中,Conductor是目标,main_wnd和Peer_connection_client是观察者角色,同时这里还有一个妙用,观察者通过回调,也能调用目标者的相关API。

Webrtc之peerconnection_client详解(一)

conductor和main_wnd,Peer_connection_client三者关系

登录流程入口函数:OnMessage—-.>OnDefaultAction —->StartLogin
通话连接入口函数:OnMessage—–> OnDefaultAction —>ConnectToPeer
视频渲染流程函数:OnFrame—–>InvalidateRect—>OnPaint—-使用GDI渲染
这里有一个疑问?音频渲染是怎么实现的?为啥该demo没有找到音频渲染的回调,对音频PCM数据进行render的相关处理呢?获取源代码或了解更多信息请关注微信公众号:AV_Chat

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35326.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信