QTSS源代码分析.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
QTSS源代码分析

QTSS源代码分析 1.系统结构和流程图 1.1系统结构 图1 Apple给的服务器架构 1.1.1DSS服务器是一个多线程的架构 核心服务器的作用是充当网络客户和服务器模块的接口,其中网络客户使用RTP和RTSP协议来发送请求和接收响应,而服务器模块则负责处理请求和向客户端发送数据包。核心服务器通过创建四种类型的线程来完成自己的工作,具体如下: (1)服务器自己拥有的主线程(Main Thread)。这个线程负责检查服务器是否需要关闭,记录状态信息,或者打印统计信息。 (2)空闲任务线程(Idle Task Thread)。空闲任务线程管理一个周期性的任务队列。该任务队列有两种类型:超时任务和套接口任务。 (3)事件线程(Event Thread)。事件线程负责侦听套接口事件,比如收到RTSP请求和RTP数据包,然后把事件传递给任务线程。 (4)一个或者多个任务(Task)线程。任务线程从事件线程中接收RTSP和RTP请求,然后把请求传递到恰当的服务器模块进行处理,把数据包发送给客户端。缺省情况下,核心服务器为每一个处理器创建一个任务线程。 每一个Task对象都有两个主要的方法:即Signal和Run。服务器调用Signal方法来把一个事件发送给Task对象,而Run方法则用来为Task对象指定处理事件的时机。信号机制使用的是同步信号灯机制而不是互斥锁。 1.2 服务器对象 图2 服务器对象数据模型 服务器对象中有一个预置信息字典。服务器内部有一个模块列表,列表中的每一个模块都有一个字典,用于存放自己的预置信息。服务器中还有一个RTP客户会话的列表,每一个会话都可能有一个RTSP会话以及一个或多个RTP媒体流。通过API来遍历服务器中所有活跃的会话和流是有可能的。 (1)QTServer是一个核心服务器对象,这个对象的一部分可以通过API和QTSServerInterface基类来进行访问。 (2)Dictionary是一种把键值对实现为对象数据的数据存储类。由API定义的所有服务器对象都是从这个基类继承下来的。 (3)Module是管理模块的类。每个模块的实例负责装载,初始化,以及执行一个静态或者动态的API模块。 (4)RTSP和RTP会话。流的读写是由会话通过一个流对象来管理的。RTSP会话在RTSPSession::Run方法中会调用每个模块中注册过的RTSP角色(Role)。被调用的API模块角色有QTSS_RTSPFilter_Role,QTSS_RTSPRoute_Role,QTSS_RTSPAuthenticate_Role, QTSS_RTSPAuthorize_Role,QTSS_RTSPPreProcessor_Role,QTSS_RTSPRequest_Role, QTSS_RTSPPostProcessor_Role,和QTSS_RTSPSessionClosingRole。RTSP会话还会调用注册为QTSS_RTSPIncomingData_Role角色的模块。RTP会话除了处理数据的读写之外,还调用下面的角色:QTSS_RTPSendPackets_Role,QTSS_RTCPProcess_Role,和QTSS_ClientSessionClosing_Role。 图3 更详细的服务器模块 1.3模块角色表 名称 常数 任务 Register(注册)角色 QTSS_Register_Role 注册模块支持的角色。 Initialize(初始化)角色 QTSS_Initialize_Role 执行模块的初始化任务。 Shutdown(关闭)角色 QTSS_Shutdown_Role 执行清除现场任务。 Reread Preferences(再次读取预置信息)角色 QTSS_RereadPrefs_Role 重新读取模块的预置信息。 Error Log(错误纪录)角色 QTSS_ErrorLog_Role 记录错误信息。 RTSP Filter(过滤器)角色 QTSS_RTSPFilter_Role 修改RTSP请求的内容。 RTSP Route(路由)角色 QTSS_RTSPRoute_Role 把来自客户端的请求路由到恰当的文件夹。 RTSP Preprocessor(预处理器)角色 QTSS_RTSPPreProcessor_Role 在服务器处理客户请求之前,先行进行处理。 RTSP Request(请求)角色 QTSS_RTSPRequest_Role 在没有其它角色处理客户请求的情况下,对客户请求进行处理 RTSP Postprocessor(后处理器)角色 QTSS_RTSPPostProcessor_Role 在请求得到响应之后,执行诸如纪录统

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档