<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#CCCCCC" text="#000000">
    Greetings all,<br>
    <br>
    I wish to use live555 to deliver in memory nals created with x264. 
    In my application, I spawn off the live555 event loop into a
    separate thread from the one responsible for doing the encoding.  I
    am configuring my encoder to output nals that will fit inside the
    standard mtu.<br>
    <br>
    In order to pass data from the encoder thread to the live555 thread,
    I am anticipating implementing a series of buffers, with a control
    scheme to switch back and forth to allow for minimal blocking, ie,
    the live555 thread will always have a static buffer of known content
    length to read from, the encoder thread will always have a similar
    buffer to write to, and there will be a back-buffer with a complete
    buffer of data ready to go should there be a point where all data
    has been read but the writer is still writing.<br>
    <br>
    I have a couple questions.<br>
    <br>
    Given what I've read so far, I should subclass ServerMediaSubsession
    and implement createNewStreamSource, making use of
    ByteStreamMemorySource class in some way.  Given that I'll be
    changing the buffer to be read from, does this mean that I will have
    to create a new instance of the custom sms every time there is a new
    buffer to read from?  Or instead, will my custom sms need to handle
    the setup and teardown of ByteStreamMemorySources?  Or else, how is
    it anticipated that an in memory location be used to pass data to
    the live555 event loop when the data is sourced from a different
    thread?  Would it be easier to simply memmove the data to be read
    into the readbuffer instead of change the readbuffer's location?<br>
    <br>
    Also, I notice that the createNewStreamSource call returns a framed
    source object, of which H264FUAFragmenter seems to implement, and
    whose methods seem to suggest that it is intending to be used to
    feed nals to some upper layer.  Given also that I am already
    creating nals small enough to be packed inside an individual rtp
    packet, and the FUAFragmenter class seems to have code in it to
    handle nals of varrying sizes, is it the correct class for use in
    implementing the createNewStreamSource as mentioned above?  I've
    read through some examples, but what I'm supposed to make happen
    inside of a createNewStreamSource hasn't clicked with me yet.<br>
    <br>
    Thank you very much for your time.<br>
    <meta charset="utf-8">
    <pre class="moz-signature" cols="72">-- 
Joshua Kordani
LSA Autonomy</pre>
  </body>
</html>