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