<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div bgcolor="#FFFFFF" text="#000000">For an example, our sever session status widget displays, among
other things the RTP and RTCP ports for UDP that are in use for each
stream in each client session. Right or wrong the way we did it
before was by sub-classing RTSPClientSession so we'd have access to
the void* streamToken for each stream and then through
OnDemaindMediaSubsession (or a subclass there of) inspecting the
values in the StreamState object. Each RTSPClientSession object has
a list of StreamState objects that appears to hold all of this kind
of information and it appears to be specific to the client session.</div></blockquote>[...]<br><blockquote type="cite"><div bgcolor="#FFFFFF" text="#000000">Spending a few minutes looking at the code this morning I can't see another easy way to do this.</div></blockquote><div><br></div><div>Another way to do this - which is the way that I originally would have preferred - is to redefine (in your "OnDemandServerMediaSubsession" subclass) the "getStreamParameters()" virtual function. Your reimplemented "getStreamParameters()" would first call the original "getStreamParameters()", and then get the RTP and RTCP port numbers (which were result parameters from this call).</div><div><br></div><div>But on reflection this probably isn't really any cleaner than what you're doing, so, reluctantly, I'll endorse letting developers see the "StreamState" and "Destinations" classes. So, in the next release of the software, I'll make the "fDestinationsHashTable" field "protected:". That should give you what you need.</div><div><br></div><br><blockquote type="cite"><div bgcolor="#FFFFFF" text="#000000">I'm not quite sure how it works if fReuseFirstSource is set and one
client requests a TCP connection and another a UDP? <br></div></blockquote><div><br></div></div>Aha! There's actually a bug in the current code that prevents this from working properly. That's another thing that I'll need to fix in the next release of the software.<br><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>