> 2. One of the biggest performance hits in my profiling is memcpy (I use an 
> embedded platform, so memcpy gets pricy fast), much of it due to copying 
> media buffers. Would you ever consider adding (or consider accepting ;) code 
> that allows live555 to work in the calling library's buffers instead of its 
> own?

If I were to go back in time and design the LIVE555 code all over again, then 
this is something that I might well have done differently.  In any case, 
sometime in the future, when I replace/reimplement the crusty old "groupsock" 
library (so that network interfaces become proper "FramedSource" and 
"MediaSink" objects, and we can also support IPv6), I will likely need to 
rethink the buffering mechanism, otherwise we'll be introducing an extra memcpy 
when transmitting data over a network socket.  But that's for sometime in the 
future (because any buffering changes will be a *major* change to the code, 
involving a *lot* more than a simple patch).


> (in other words, I give Live555 a pointer to a buffer to send and the size, 
> rather than memcpy'ing the buffer into live555's space)

Unfortunately it wouldn't be quite that simple.  Suppose, for example, we're 
outputting data into a "RTPSink".  If the upstream object is providing it a 
buffer, it would also need to know that it needs to leave sufficient space at 
the front of the buffer, so that the "RTPSink" can add the 12-byte RTP header 
(plus any required RTP header extension bytes).  (This wouldn't be necessary if 
the network interface supports 'scatter gather I/O', but we can't assume this 
in general.)

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to