live555的两个循环

来源:互联网 发布:广州数控g76锥螺纹编程 编辑:程序博客网 时间:2024/05/17 08:35
我的理解是live有两个循环!
一个是select()所在的主循环,它即监听连接,也接收请求。
另一个是发送数据的循环,如你上面所说的在MultiFramedRTPSink类中,通过buildAndSendPacket、packFrame、afterGettingFrame、afterGettingFrame1、sendPacketIfNecessary和sendNext构成了一个循环圈,数据包的读取和发送在这里循环进行着。特别注意的是sendPacketIfNecessary方法中的后面代码(nextTask() = envir().taskScheduler().scheduleDelayedTask(uSecondsToGo, (TaskFunc*)sendNext, this);),通过Delay amount of time后,继续下一个Task,并回过来继续调用buildAndSendPacket方法。