<HTML>
<HEAD>
<TITLE>Dynamically adding streams with reference counting</TITLE>
</HEAD>
<BODY>
<FONT FACE="Verdana, Helvetica, Arial"><SPAN STYLE='font-size:12.0px'>Hi all,<BR>
<BR>
I am trying to implement a dynamic rtsp server. &nbsp;By this I mean it will add the appropriate ServerMediaSession to the server when a url is requested. &nbsp;For example, if the server receives: rtsp:ip:port/mystreamid, it will look up to see if the session exists, and if not dynamically add it. &nbsp;To do this I overrode the RTSPServer::lookupServerMediaSession method as recommended on this list. &nbsp;<BR>
<BR>
It adds the stream by creating a new ServerMediaSession, and adding the appropriate ServerMediaSubsessions. &nbsp;Each custom ServerMediaSubsession ( inherited from OnDemandServerMediaSubsession) implements a custom createNewStreamSource which returns a custom framed source object that provides the data.<BR>
<BR>
I have the initiation and streaming working great! &nbsp;However, I also want to know when the client has closed its connection so I can remove the dynamic ServerMediaSession. &nbsp;I was planning on implementing it in the following way:<BR>
<BR>
Create a custom ServerMediaSession object that has a couple of new functions that allow reference counting. &nbsp;In the ServerMediaSubsession implentation when a FramedSource object is created (ie. when createNewStreamSource is called) the count on the ServerMediaSession incremented, if it is destroyed (ie. CloseStreamSource is called) the reference is decremented. &nbsp;If the reference count is zero, then a event is triggered to remove the ServerMediaSession from the RTSPServer.<BR>
<BR>
I am aware of the following caveat with what I am planning: When the sdpLines function is called it initiates and destroys a FramedSource object in order to generate the sdp. &nbsp;I know I have to handle this situation.<BR>
<BR>
I think it would be easier to have access to the fDestinationHashTable object in the OnDemandServerMediaSubsession, as this keeps a track of the destinations and can be queried through the numEntries method. &nbsp;This is currently a private member variable in OnDemandServerMediaSubsession and cannot be accessed.<BR>
<BR>
I really want to know if you guys think that what I am planning to do makes sense, or if you know of a better way. &nbsp;<BR>
<BR>
I appreciate any help that can be offered.<BR>
Cheers<BR>
Stuart<BR>
<BR>
</SPAN></FONT>

<BR>
- ------------------------------------------------------------------------------<BR>
Confidentiality Notice: The information contained in this transmission is legally privileged and confidential, intended only for the use of the individual(s) or entities named above. This email and any files transmitted with it are the property of Pelco. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any review, disclosure, copying, distribution, retention, or any action taken or omitted to be taken in reliance on it is prohibited and may be unlawful. If you receive this communication in error, please notify us immediately by telephone call to +1-559-292-1981 or forward the e-mail to administrator@pelco.com and then permanently delete the e-mail and destroy all soft and hard copies of the message and any attachments. Thank you for your cooperation. <BR>
- ------------------------------------------------------------------------------<BR>
</BODY>
</HTML>