live555的代码理解

 

https://blog.csdn.net/li_wen01/article/details/51762040

live555为流媒体提供解决方案的平台的c++开源库。

1.各个库的介绍

         LIVE555下包含LiveMedia、UsageEnvironment、BasicUsageEnvironment、GroupSock库,MediaServer简单服务器程序以及其他多个测试demo。

1.1LiveMedia

包含一系列处理不同编码格式和封装格式的类,基类是Medium(live/liveMedia/include/Media.hh)。

 

1.2UsageEnvironment

         环境类,用于错误信息的输出。LIVE555中多数类中均包含此类对象指针。其内部包含TaskSchedule抽象类的指针,该类用于任务调度,因此所有包含UsageEnvironment指针的类均可将自己加入到调度中。

 

1.3BasicUsageEnvironment

         包含具体环境类和具体TaskScheduler类。UsageEnvironment用于对错误信息的处理,BasicUsageEnvironment类用于以控制台方式输出错误信息。因此想要以其他方式输出错误信息的类,可以从UsageEnvironment派生。BasicTaskSchedule类继承自TaskScheduler抽象类,用以定义具体的调度策略。任何基于LIVE555的应用程序均需要定义自己的BasicEnvironment和TaskScheduler库。如果创建窗口应用程序,在重定义TaskScheduler时,需要与图形环境自己的事件处理框架集成。BasicTaskSheduler使用select模型实现事件的获取和处理。如果想使用更高效的IOCP模型,可以定义自己的BasicTaskScheduler类。BasicTaskScheduler内部有一个循环,循环读取队列中的消息并处理。整个基于BasicTaskScheduler的程序只有一个线程驱动。

1.4GroupSock

         对各种socket操作的封装,用于收发数据。主要面向组播,但也可以进行单播的收发数据,仅支持UDP,不支持TCP。

1.5 MediaServer 服务器程序

         该程序使用BasicUsageEnvironment库实现,因此是一个控制台程序。任务调度类是BasicTaskScheduler类,因此使用Select模型且仅有一个线程在循环处理各种事件。

 

 

         LIVE555中大量使用简单工厂模式,每个子类均有一个CreateNew静态成员。该子类的构造函数被设置为Protected,因此在外部不能直接通过new来构造。同时,每个类的构造函数的参数中均有一个指向UsageEnvironment的指针,从而可以输出错误信息和将自己加入调度。

 

MediaSouce是所有Souce的基类,MediaSink是所有Sink的基类。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值