
WebRTC源码分析
文章平均质量分 90
webrtc
玩转流媒体
这个作者很懒,什么都没留下…
展开
-
WebRTC PeerConnection Client源码分析3-Conductor
本文分析的webrtc的版本是:m84 平台:win10WebRTC PeerConnection Client源码分析<1>-main windowWebRTC PeerConnection Client源码分析<2>-PeerConnectionClientWebRTC PeerConnection Client源码分析<3>-Conductor注:下文中所谓的回调函数,实际上是虚函数。把虚函数说成回调函数是为了描述方便。Conductor是Pee原创 2021-10-02 19:18:36 · 1449 阅读 · 5 评论 -
WebRTC PeerConnection Client源码分析2-PeerConnectionClient
本文分析的webrtc的版本是:m84 平台:win10WebRTC PeerConnection Client源码分析<1>-main windowWebRTC PeerConnection Client源码分析<2>-PeerConnectionClientWebRTC PeerConnection Client源码分析<3>-Conductor本文用到的抓包数据,可以从这里下载:PeerConnectionClient用于和信令服务器进行交互,原创 2021-10-02 19:12:40 · 1635 阅读 · 8 评论 -
WebRTC PeerConnection Client源码分析1-main window
本文分析的webrtc的版本是:m84 平台:win10WebRTC PeerConnection Client源码分析1-main windowWebRTC PeerConnection Client源码分析2-PeerConnectionClientWebRTC PeerConnection Client源码分析3-ConductorPeerConnection是WebRTC官方提供的P2P示例,麻雀虽小五脏俱全,这个示例对于学习WebRTC是非常有帮助,下面我们开始详细的分析其代码逻原创 2021-10-02 19:10:33 · 2009 阅读 · 0 评论 -
WebRTC源码分析之模块的执行-Module
文章目录Module使用示例工程示例Module源码分析类关系图ProcessThread类Module类QueuedTask类ProcessThreadImpl类ModuleCallback类数据成员构造器与析构器模块处理线程的创建与销毁模块的注册与注销投递任务执行指定模块模块的处理小结WebRTC中将某些功能划分了模块,现在介绍一下模块是如何执行的。WebRTC中会创建一个线程用于执行模块和异步的任务,模块生成以后注册到线程中,模块执行时会计算下次需要执行的时间,线程根据模块提供的时间会按照指定的时间原创 2021-03-15 19:19:45 · 855 阅读 · 1 评论 -
WebRTC源码分析之任务队列-TaskQueue
文章目录TaskQueue使用示例工程示例TaskQueue源码分析类关系图TaskQueueBase类声明CurrentTaskQueueSetter类TaskQueueStdlib类数据成员任务队列的创建销毁任务队列唤醒任务处理线程投递任务任务处理线程处理任务QueuedTask类TaskQueue类声明工厂模式创建任务队列对象TaskQueueDeleter类TaskQueueFactory类TaskQueueStdlibFactory类CreateTaskQueueStdlibFactory函数创建原创 2021-03-14 18:24:13 · 2340 阅读 · 2 评论 -
WebRTC源码分析之平台线程-PlatformThread
文章目录PlatformThread使用示例示例-创建执行一次的线程示例-创建可以执行多次的线程示例-高优先级线程先运行PlatformThread源码分析数据成员构造器和析构器设置线程的属性线程的入口函数创建线程回收线程小结WebRTC是跨多种平台的,为了方便线程的使用,把各个平台的线程封装成了PlatformThread类。PlatformThread封装的线程是有优先级的,线程的执行并不是按时间片轮询执行的,而是高优先级的线程会一直在CPU中执行,直到有更高优先级的线程到来或主动让出CPU。Pla原创 2021-03-14 18:23:56 · 1258 阅读 · 0 评论 -
WebRTC源码分析之配置信息-FlagList
文章目录FlagList使用示例工程示例-定义标记示例-标记的额外信息示例-显示所有的标记示例-显示指定文件中的标记示例-解析命令行参数示例-解析命令行参数并删除命令行中的标记FlagList源码分析FlagValue类Flag类FlagList类WEBRTC_DEFINE_string宏函数宏函数原型宏函数的使用WEBRTC_DECLARE_string宏函数宏函数原型宏函数的使用小结FlagList是一个全局链表,用于保存所有的标记,这些标记一般都是WebRTC的配置信息。标记都有两个值,一个是默认值原创 2021-03-14 18:23:40 · 445 阅读 · 4 评论 -
WebRTC源码分析之日志-RTC_LOG
文章目录RTC_LOG使用示例示例-日志输出到标准错误stderr示例-带有时间和线程信息的日志示例-日志输入到文件示例-带有错误信息的日志RTC_LOG源码分析LogMessage类数据成员构造器析构器更新最小日志级别配置数据获取数据添加、删除文件流Log函数LogCall类LogStreamer类RTC_LOG宏函数宏函数原型宏函数的使用RTC_LOG_ERRNO宏函数宏函数原型宏函数的使用LogSink类FileRotatingLogSink类CallSessionFileRotatingLogSin原创 2021-03-14 18:23:21 · 3989 阅读 · 0 评论 -
WebRTC源码分析之断言-RTC_DCHECK
文章目录RTC_DCHECK使用示例工程示例1示例2示例3RTC_DCHECK源码分析CheckArgType枚举类Val类MakeVal函数AppendFormat函数ParseArg函数FatalLog函数LogStreamerLogStreamer<>LogStreamerWebRTC中没有使用标准库中的断言,而是自己封装了一套断言宏,功能更加丰富,在断言失败时可以提供更多的失败信息。RTC_DCHECK使用示例工程示例工程:https://pan.baidu.com/s/1rbI2原创 2021-03-14 18:22:59 · 2666 阅读 · 0 评论 -
WebRTC源码分析之流-Stream
文章目录流接口-StreamInterface类的关系图StreamInterface源码分析文件流-FileStreamFileStream使用示例FileStream源码分析Read函数Write函数旋转文件流-FileRotatingStreamFileRotatingStream使用示例CallSessionFileRotatingStream使用示例FileRotatingStreamReader使用示例FileRotatingStream源码分析FileWrapper类全局函数对文件的处理对目录原创 2021-03-14 18:22:32 · 1052 阅读 · 0 评论 -
WebRTC源码分析之工程-project
文章目录创建工程所在的文件夹创建自己的工程添加自己的文件和依赖库运行工程小结学习WebRTC避免不了自己弄个工程,写点代码调用调用WebRTC。常见的方式有三种:自己创建工程,把WebRTC当做库使用。抽取代码,构建自己工程。这种方式对于小工程还可以,若是稍大些工程,关联的代码太多,抽取难度太大。在源代码的工程基础上,添加新的工程。这种方式实现简单,若只是做些简单的调用,还是很方便的。下面介绍一下如何在原有工程基础上,添加新的工程。创建工程所在的文件夹先找到WebRTC经典示例peerc原创 2021-03-14 18:21:58 · 754 阅读 · 1 评论 -
WebRTC源码分析之定位-Location
文章目录Location使用示例工程示例Location源码分析实现原理类的声明构造器和赋值运算符重载将位置信息转成字符串RTC_FROM_HERE宏小结Location类用于记录类对象产生的位置信息,方便日志的打印。记录的信息主要有,类对象产生的文件名、所在的函数名、所在文件的行号。Location使用示例工程示例工程:https://pan.baidu.com/s/1rbI2hwXpMA-Pb-i-zCdVWA 提取码:cenz示例#include <iostream>#原创 2021-03-14 18:21:35 · 483 阅读 · 0 评论 -
WebRTC源码分析之事件-Event
文章目录Event使用示例工程示例-一直阻塞示例-有超时的阻塞示例-提前结束超时阻塞Event源码分析实现原理Event的声明构造器和析构器时间转换函数阻塞事件唤醒事件重置事件小结Event类实现了事件的等待和触发,通过接口Wait()函数可以实现线程的阻塞,而Set()函数可以激活阻塞的线程。Event类在WebRTC的很多位置都有使用,理解了Event类才能更好的阅读其他WebRTC源码。Event使用示例工程示例工程:https://pan.baidu.com/s/1rbI2hwXpMA-P原创 2021-03-14 18:20:18 · 663 阅读 · 1 评论 -
WebRTC源码分析之锁-CriticalSection
文章目录CriticalSection使用示例工程不加锁加锁-使用pthread库中的互斥锁加锁-使用CriticalSection加锁-使用CritScope加锁-使用GlobalLockCriticalSection源码分析CriticalSection类类的声明构造器和析构器CurrentThreadIsOwner函数Enter函数TryEnter函数Leave函数CritScope类类的声明构造器和析构器TryCritScope类GlobalLockPod类GlobalLock类GlobalLock原创 2021-03-14 18:19:19 · 947 阅读 · 0 评论 -
WebRTC源码分析之智能指针-scoped_refptr
文章目录scoped_refptr使用示例工程示例scoped_refptr源码分析实现原理资源获取即初始化(RAII)引用计数类的关系图对托管对象的包装RefCountInterfaceRefCounterRefCountedObject宏原型展开结果小结对托管对象的管理scoped_refptr的概述构造器和析构器运算符重载函数其他成员函数小结unique_ptr和scoped_refptr是WebRTC中使用最多的两种智能指针,unique_ptr是C++标准库中的智能指针,而scoped_refp原创 2021-03-13 23:50:42 · 2916 阅读 · 4 评论 -
WebRTC源码分析之信号与槽-sigslot
文章目录sigslot使用示例工程示例-不传参的信号示例-注销信号示例-传参的信号示例-拷贝构造的槽对象也可以接收信号示例-槽对象释放以后,不会致使信号发射失败。示例-信号对象的拷贝sigslot源码分析实现原理观察者模式类成员函数指针变参模板类的关系图has_slots_interface类_signal_base_interface类_opaque_connection类数据成员构造器发射函数获取槽对象其他_signal_base类数据成员构造器和析构器信号对象在槽对象中注销槽对象在信号对象中注销其他h原创 2021-03-12 19:06:16 · 1344 阅读 · 0 评论 -
WebRTC源码分析
WebRTC源码剖析原创 2020-02-15 15:52:34 · 1035 阅读 · 0 评论