[Live-devel] using live555 with in memory data
Joshua Kordani
jkordani at lsa2.com
Tue Oct 8 09:20:13 PDT 2013
Greetings all,
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.
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.
I have a couple questions.
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?
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.
Thank you very much for your time.
--
Joshua Kordani
LSA Autonomy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20131008/a7cab4c6/attachment.html>
More information about the live-devel
mailing list