<HTML>
<HEAD>
<TITLE>Re: [Live-devel] Receiving in multiple threads</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>I just wanted to update with my findings. &nbsp;As I suspected, the issue at hand was that <I>occasionally </I>2 different RTPClients in the same process would be assigned the same client_port (either from the server or the algorithm in MediaSession). &nbsp;&nbsp;&nbsp;<BR>
<BR>
Basically, my finding is that if the 2 RTSPClient&#8217;s (in separate threads and usage environments) initiated at about the same time, they would both be assigned the same port in their bind call. &nbsp;I notice that in GroupsockHelper the library does set SO_REUSEADDR and SO_REUSEPORT so multiple binds binds on the same port will work. &nbsp;Although on the same port in the same process, in my experience only 1 receiver will be able to process the incoming UDP packets. &nbsp;I have not tried this in multiple processes yet as you suggested, I will try and do that and report back my findings.<BR>
<BR>
I will be changing the plugin model to share a single UsageEnvironment and TaskScheduler across many plugins to work around these issues. &nbsp;&nbsp;&nbsp;This definitely appears to be the better way forward, and the way the library was designed to be used.<BR>
<BR>
Stuart<BR>
<BR>
<BR>
<BR>
On 3/7/09 6:09 PM, &quot;Ross Finlayson&quot; &lt;<a href="finlayson@live555.com">finlayson@live555.com</a>&gt; wrote:<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><BLOCKQUOTE><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>1. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;My understanding is that so long as each instance of the library uses its own usageenvironment and event loop, it is ok to have multiple instances in multiple threads (although I agree this is really not advised).<BR>
</SPAN></FONT></BLOCKQUOTE></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
Yes, this should work, in principle. &nbsp;However, it has not been extensively tested, and I can't guarantee &nbsp;that there's not still some inadvertently shared state somewhere. &nbsp;(If anyone finds some, though, please let us know, and I'll try to remove it.)<BR>
<BR>
Have you tried putting your RTSP server in a separate *process* from your input plugins. &nbsp;(Since your plugins are communicating with the server via pipes, this should be straightforward, I think...)<BR>
<BR>
</SPAN></FONT><BLOCKQUOTE><BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>3. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Would it make sense to add an optional base port for the client to use, similar to RTSPServer?<BR>
</SPAN></FONT></BLOCKQUOTE></BLOCKQUOTE><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
No, because there's no standard port number for RTSP *clients*.<BR>
</SPAN></FONT></BLOCKQUOTE>

<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>