
Darwin
longlong530
这个作者很懒,什么都没留下…
展开
-
【Darwin学习笔记】之TaskThread
学习TaskThread主要有三个类要关注:TaskTreadPool: 任务线程池TaskThread:任务线程Task: 任务1. TaskThreadPoolDarwin运行着一个或者多个任务(Task)线程,并将他们统一在线程池TaskThreadPool中管理。任务线程从事件线程中接收RTSP和RTP请求,然后把请求传递到恰当的服务器模块进行处理,把数据包发送原创 2015-01-28 10:43:20 · 3976 阅读 · 0 评论 -
【Darwin学习笔记】之EventThread
EventThread负责侦听Darwin系统的Socket事件,包括以下两类, 对于两类事件是分别如何处理的,我们从头开始分析。a) 建立新的RTSP连接请求事件 b) 已有RTSP连接上的RTSP请求消息事件 一. EventThread 对象的创建 RunServer.cpp 中StartServer函数初始化调用了 Socket::Initiali原创 2015-01-27 16:48:02 · 2080 阅读 · 0 评论 -
【Darwin学习笔记】之RTSP连接监听初始化
网上有很多大侠已经对Darwin做了详细的剖析,在下仅本着积累经验的目的,将Darwin的学习过程记录下来,同时与网友们交流学习,今天先来分析下Darwin如果根据配置文件监听RTSP连接的流程。1. Darwin系统初始化,Bool16 QTSServer::Initialize(.....)2. QTSServer::CreateListeners(...)根据本地xml配置文件中的地址和端口进行监听的建立,主要有两个配置项:<PREF NAME="bind_ip_addr" >0</PREF>原创 2015-01-27 14:14:33 · 2275 阅读 · 0 评论 -
【Darwin学习笔记】之RTSPSession点播流程
今天详细的看了下RTSPSession的会话处理代码,该模块主要是Run方法内对会话的状态机进行管理,实现对RTSP会话的处理,我以点播Movie文件夹下的视频文件为例,深入的学习了(Describe、Setup、Play的点播流程),并按照状态机的处理顺序对他们进行一一解析,如下:【转载请注明出处】:http://blog.youkuaiyun.com/longlong5301. 状态机 kRe原创 2015-02-03 16:54:16 · 2515 阅读 · 0 评论 -
【Darwin学习笔记】之获取系统处理器数量的方法
阅读Darwin源码的时候看到这个方法,感觉挺有用处,且考虑了多种平台下的实现方式,直接贴代码,以后说不定会用到~UInt32 OS::GetNumProcessors(){#if (__Win32__) SYSTEM_INFO theSystemInfo; ::GetSystemInfo(&theSystemInfo); return (UIn原创 2015-01-28 13:48:06 · 1324 阅读 · 0 评论 -
【Darwin学习笔记】之QTSSReflectorModule的Announce消息处理
RTSP Announce命令是数据源向Darwin服务端主动发起的上报本地媒体sdp信息的命令,在Darwin中处理该命令的函数为QTSSReflectorModule模块的DoAnnounce()函数,下面对该函数的进行剖析:1. 判断sAnnounceEnabled是否开启,由以下配置项确定,默认为truetrue2. 通过键值qtssRTSPReqLocalPath获取完整原创 2015-02-04 17:35:33 · 2067 阅读 · 0 评论 -
【Darwin学习笔记】之QTSSReflectorModule的Describe消息处理
对于QTSSReflectorModule里面的Describe消息只处理sdp类型的资源请求,其他类型的比如mov、mp4等资源会跳转到QTSSFileModule里面,其中mp4文件在Darwin源码中点播需要先hint下。如果想在增加多种视频格式那就要对FileModule进行扩展,在我们的项目中就优化了FileModule,实现了对mp4、avi等各种格式的文件的点播支持。后面的章节我们详原创 2015-02-06 15:19:52 · 1715 阅读 · 0 评论 -
【Darwin学习笔记】之QTSSReflectorModule的Setup消息处理
Setup消息进入到DoSetup函数单独处理,处理流程如下:【转载请注明出处】:http://blog.youkuaiyun.com/longlong5301. 根据关键字qtssRTSPReqTransportMode判断是否为推模式,具体isPush值由Setup请求中的mode值有关,mode="receive" || mode="record"表示isPush为true。对应的解原创 2015-02-09 10:11:09 · 1833 阅读 · 0 评论