live555源码初步解析(一)

转载 2011年01月19日 14:46:00

最近因项目需要,要学习live555这个开源平台。live555是用c++实现的,对于该平台的介绍网上有很多文章,以下是个人在读它源码时的记录,也是一个初步的理解,和大家一起分享一下。有错误,或者不足之处请大家指出。

 


 BasicUsageEnvironment

a)      BasicHashTable.cpp

1.      BasicHashTable

功能: 一个简单的hash表的实现

SMALL_HASH_TABLE_SIZE=4

构造函数BasicHashTable(int keyType),传入参数键的类型

Add(char const* key, void* value增加一对键值 注:void* 指针,它可以保存任何类型对象的地址

Remove(char const* key) 根据键删除一个键值对

Lookup(char const* key) 根据键查询键值

NumEntries() 返回实体数目

HashTable* create(int keyType) hash表的创建

Iterator* create(HashTable& hashTable) 返回hash表的迭代器

b)      HandlerSet.hh (handlerSet 的定义)

1.      HandlerDescriptor类,句柄描述符

int socketNum  //socket数量

BackgroundHandlerProc* handlerProc  //句柄后台处理的进程指针

void* clientData  //客户端数据指针

2.      HandlerSet类,句柄的集合

assignHandler(int socketNum,TaskScheduler::BackgroundHandlerProc* handlerProc, void* clientData); //分配句柄

removeHandler(int socketNum);  //根据socket号删除句柄

3.      HandlerIterator类,句柄迭代器

HandlerDescriptor* next();  //下一个句柄,没有则返回NULL

reset();

 

c)      DelayQueue.hh

1.      DelayQueueEntry类,延迟队列实体

long token();  //????

2.      DelyQueue类,延迟队列

addEntry(DelayQueueEntry* newEntry); //return a token for the entry

updateEntry(DelayQueueEntry* entry, DelayInterval newDelay);

updateEntry( long tokenToFind, DelayInterval newDelay);

removeEntry() //移除实体,但是不删除

DelayInterval const& timeToNextAlarm();

handleAlarm();

 

 

d)      UsageEnvironment.hh

1.      UsageEnvironment类,这是一个抽象的基类

void reclaim();//回收,当没有剩余的状态时,删除自己

taskScheduler()  //任务调度程序

//结果信息的处理

getResultMsg();

setResultMsg();

setResultErrMsg();

appendToResultMsg();   //like setResultMsg(), except that an 'errno' message is appended

reportBackgroundError();//用于报告后台预先设置的错误的信息

getErrno(); // ‘errno’

UsageEnvironment& operator<<(); //console output

 

2.      TaskScheduler类,任务调度类,是一个抽象的基类

virtual TaskToken scheduleDelayedTask(nt64_t microseconds, TaskFunc* proc,void* clientData)  //当我们下一个达到调度点的,调度一个任务(在一个延迟之后)。(Does not delay, if “microseconds”<=0,)。返回一个token,可用于以后的unscheduleDelayTask()的调用。

virtual void unscheduleDelayedTask(TaskToken& prevTask);  //设置”prevTask”=NULL(如果prevTask==NULLno effect

virtual void rescheduleDelayedTask()        // Combines "unscheduleDelayedTask()" with "scheduleDelayedTask()"  (setting "task" to the new task token).

typedef void BackgroundHandlerProc(void* clientData, int mask); // handing sockets reads in the background

virtual void turnOnBackgroundReadHandling () //打开后台socket读取

virtual void turnOffBackgroundReadHandling () //关闭后台socket读取

virtual void doEventLoop(char* watchVariable = NULL) // Stops the current thread of control from proceeding, but allows delayed tasks (and/or background I/O handling) to proceed.(If "watchVariable" is not NULL, then we return from this routine when *watchVariable != 0)

live555源代码分析

live555源代码概述 liveMedia 项目(http://www.live555.com/)的源代码包括四个基本的库,各种测试代码以及 Media Server。四个基本的库分别是: Usag...
  • leixiaohua1020
  • leixiaohua1020
  • 2013年10月02日 14:53
  • 34720

live555源代码详细分析解析,教你如何使用live555接收rtsp数据

最近继续看了看live555的代码,进行了一些具体的实验。 对live555的部分特性有了一定的了解。 稍微看了网上的一些关于live555的文章,千篇一律。 大部分都是转载自一个人的博客。 ...
  • lifan_3a
  • lifan_3a
  • 2014年12月03日 11:30
  • 1146

庖丁解牛-----Live555源码彻底解密(根据MediaServer讲解Rtsp的建立过程)

live555MediaServer.cpp服务端源码讲解(testRelay.cpp,http://blog.csdn.net/smilestone_322/article/details/1892...
  • maopig
  • maopig
  • 2015年10月14日 18:03
  • 7781

live555 接收rtsp视频流详细源码流程详细解析

程序从rtsp_player_task这个线程开始进入进入到live555的客户端。 1:char *argv[5]={"openRTSP", "-b", "80000", "-t", ""};这是...
  • cosmoslife
  • cosmoslife
  • 2012年05月17日 10:17
  • 1770

Live555源码解析(2) - RTSP协议概述

上一篇Live555源码解析(1) - Main 寻根问祖,留其筋骨将main()函数脉络做了整体分析,理论上本篇将从服务器的创建开始讲起,但众所周知,Live555媒体服务器是RTSP服务器的实现,...
  • u010808402
  • u010808402
  • 2017年05月25日 15:40
  • 281

基于live555的rtsp封装rtspperf的客户端源码解析

项目地址:http://sourceforge.net/projects/rtspperf/ 实现了基于epoll模型的TaskScheduler,而live555默认实现使用select模型,se...
  • smilestone322
  • smilestone322
  • 2014年01月16日 15:29
  • 3052

Live555源码解析(3) - 服务开启,愿者上钩

上一篇Live555源码解析(2) - RTSP协议概述对RTSP进行了整体介绍,对会话交互过程及通常应用场景做了示例。接下来,我们就从媒体服务器的本职工作服务开始谈起。 1. 从服务器说起要服务,...
  • u010808402
  • u010808402
  • 2017年05月25日 15:41
  • 136

live555 接收rtsp视频流详细源码流程详细解析

程序从rtsp_player_task这个线程开始进入进入到live555的客户端。 1:char *argv[5]={"openRTSP", "-b", "80000", "-t", ""};这是...
  • lifan_3a
  • lifan_3a
  • 2013年08月03日 17:16
  • 1253

live555源码带测试音视频

  • 2017年11月21日 11:22
  • 6.57MB
  • 下载

live555源码20150807版本

  • 2015年08月31日 15:30
  • 602KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: live555源码初步解析(一)
举报原因:
原因补充:

(最多只允许输入30个字)