[Live-devel] [Mirasys] Live555 RTSP server questions
Victor Vitkovskiy
victor.vitkovskiy at mirasys.com
Fri Jan 28 01:45:54 PST 2022
Hello Ross,
I have found an issue, one of subsessions was not added to RTSP server so it was not freed on RTSP server close and that's why this UsageEnvironment reclaim failed.
Best regards,
-----------------------------------------
Victor Vitkovskiy
Senior software developer
mailto: victor.vitkovskiy at mirasys.com
www.mirasys.com
-----Original Message-----
From: Victor Vitkovskiy
Sent: Friday, 28 January 2022 11:16
To: LIVE555 Streaming Media - development & use <live-devel at us.live555.com>
Subject: RE: [Live-devel] [Mirasys] Live555 RTSP server questions
Hello Ross,
Could you please advise me how to shutdown RTSP server completely and free all resources used by it?
Code example:
////////////////////
RTSPServer* rtspServer = MirasysRTSPServer::createNew(*env, port, authDB);
if (rtspServer == NULL) {
*env << "Failed to create RTSP server: " << env->getResultMsg() << "\n";
exit(1);
}
// Adding server sessions and subsessions
env->taskScheduler().doEventLoop(&stop); // does not return
// close RTSP server
Medium::close(rtspServer);
// free environment & scheduler
auto res = env->reclaim();
delete scheduler;
////////////////////
But env->reclaim() call returns False, because of this:
Boolean UsageEnvironment::reclaim() {
// We delete ourselves only if we have no remainining state:
if (liveMediaPriv == NULL && groupsockPriv == NULL) {
delete this;
return True;
}
return False;
}
liveMediaPriv is not null, so it is not removed.
Could you please advise me how to make this liveMediaPriv null? What should be called to do this?
Best regards,
-----------------------------------------
Victor Vitkovskiy
Senior software developer
mailto: victor.vitkovskiy at mirasys.com
www.mirasys.com
-----Original Message-----
From: live-devel <live-devel-bounces at us.live555.com> On Behalf Of Ross Finlayson
Sent: Wednesday, 26 January 2022 19:19
To: LIVE555 Streaming Media - development & use <live-devel at us.live555.com>
Subject: Re: [Live-devel] [Mirasys] Live555 RTSP server questions
EXTERNAL
> On Jan 27, 2022, at 2:37 AM, Victor Vitkovskiy <victor.vitkovskiy at mirasys.com> wrote:
>
> Hello Ross,
>
> So, if I understood correctly, if OutPacketBuffer::maxSize is smaller then frame, then all that is more then this value will be lost in any way?
Yes.
> I thought that if frame is bigger then buffer then I need to pass this buffer part by part in each doGetNextFrame call using fNumTruncatedBytes value to define how much data is still remained to send.
No. “doGetNextFrame()” must deliver (or attempt to deliver) only one frame[*] at a time. But you can’t deliver a frame larger than “fMaxSize”.
[* ]Strictly speaking, in the case of H.264/H.265 video, this is one "NAL unit” at a time. If you have a very large H.264/H.265 frame, it is best if you can configure your encoder to break it up into multiple ’slice’ NAL units, and deliver one of those at a time.
> But according to your last email this fNumTruncatedBytes parameter is useless if upper level components just lose all data that is bigger than OutPacketBuffer::maxSize.
“fNumTruncatedBytes” is not completely ‘useless’; it gives information to the downstream object about how much data was lost. But this data is just that - lost.
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
_______________________________________________
live-devel mailing list
live-devel at lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel
More information about the live-devel
mailing list