<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <div class="moz-cite-prefix">On 9/27/2012 7:06 AM, Ross Finlayson
      wrote:<br>
    </div>
    <blockquote
      cite="mid:CABA41FF-0F6A-4235-B97E-0DB6AA07F953@live555.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <div>Note that, in contrast, an "OnDemandServerMediaSubsession"
        object is the *wrong* thing to be inspecting, because that class
        represents a piece of media that can be streamed, possibly
        several different times (sequentially or concurrently), to many
        different clients (which might have request TCP streaming, or
        UDP streaming).</div>
      <div><br>
      </div>
      <div>And a "StreamState" object is also the wrong thing to be
        inspecting, because that class represents the state of a
        currently ongoing stream (from the piece of media represented by
        an "OnDemandServerMediaSubsession" object), *possibly to several
        different concurrent clients* (if the "reuseFirstSource"
        parameter was set to True).</div>
      <div><br>
      </div>
    </blockquote>
    <br>
    <blockquote
      cite="mid:CABA41FF-0F6A-4235-B97E-0DB6AA07F953@live555.com"
      type="cite">
      <div>In fact, I'm not convinced that any developer needs to have
        the "StreamState" class (or the "Destinations" class) visible,
        so there's a good chance that this visibility will be removed in
        future releases of the software.  (So if you, or anyone,
        believes that they really need these classes to remain visible,
        then please let us know ASAP.)</div>
      <br>
    </blockquote>
    <br>
    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.
    Looking at OnDemandServerMediaSubsession::getStreamParameters() it
    looks like the StreamState and Destinations objects do get shared if
    fReuseFirstSource is true otherwise a new set of each gets created
    for each client session. In our case fReuseFirstSource is never true
    so any sharing have states has never been a problem.<br>
    I'm not quite sure how it works if fReuseFirstSource is set and one
    client requests a TCP connection and another a UDP? <br>
    Spending a few minutes looking at the code this morning I can't see
    another easy way to do this.<br>
    <br>
    In looking at the change log, in June of last year you intentionally
    moved the definition of StreamState to
    OnDemandServerMediaSubsession.hh so that subclasses of
    OnDemandServerMediaSubsession could access them. I remember when you
    did this and I thought it was due to a specific request from the
    mailing list but I can't find the thread now. <br>
    <br>
    Matt S. <br>
    <br>
    <blockquote
      cite="mid:CABA41FF-0F6A-4235-B97E-0DB6AA07F953@live555.com"
      type="cite"><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 moz-do-not-send="true" href="http://www.live555.com/">http://www.live555.com/</a></span></span>
      </div>
      <br>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
live-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a>
<a class="moz-txt-link-freetext" href="http://lists.live555.com/mailman/listinfo/live-devel">http://lists.live555.com/mailman/listinfo/live-devel</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>