Boolean areAlreadyShuttingDown = False;
int shutdownExitCode;
void shutdown(int exitCode) {
if (areAlreadyShuttingDown) return; // in case we're called after receiving a RTCP "BYE" while in the middle of a "TEARDOWN".
areAlreadyShuttingDown = True;
shutdownExitCode = exitCode;
if (env != NULL) {
env->taskScheduler().unscheduleDelayedTask(sessionTimerTask);
env->taskScheduler().unscheduleDelayedTask(arrivalCheckTimerTask);
env->taskScheduler().unscheduleDelayedTask(interPacketGapCheckTimerTask);
env->taskScheduler().unscheduleDelayedTask(qosMeasurementTimerTask);
}
if (qosMeasurementIntervalMS > 0) {
printQOSData(exitCode);
}
// Teardown, then shutdown, any outstanding RTP/RTCP subsessions
if (session != NULL) {
tearDownSession(session, continueAfterTEARDOWN);
} else {
continueAfterTEARDOWN(NULL, 0, NULL);
}
}
live555客户端发送TEARDOEN退出
最新推荐文章于 2022-02-28 10:07:20 发布
本文介绍了在使用live555作为客户端进行RTSP接收时,如何通过发送TEARDOWN请求优雅地关闭连接。在多线程环境中,首次发送TEARDOWN请求能正常退出,但后续尝试关闭时遇到问题。分析发现问题出在shutdown函数的使用上。
摘要由CSDN通过智能技术生成