[Live-devel] [PATCH 2/2] MPEG, H264, H265: add option to preserve presentation time from source

Ross Finlayson finlayson at live555.com
Fri May 29 22:18:36 PDT 2015


> On May 29, 2015, at 1:52 AM, Stas Tsymbalov <tsymbalov at trueconf.ru> wrote:
> 
>> Yes, but the way to deliver these is through the “*DiscreteFramer” classes.  Specifically, if your input source consists of H.264 NAL units - each with a known presentation time - then you should feed your input source into a “H264VideoStreamDiscreteFramer” (and from there into a “H264VideoRTPSink”).  Note, BTW, that each H.264 NAL unit that you feed into a “H264VideoStreamDiscreteFramer” must *not* begin with a ‘start code’.
> 
> In my case encoder provides all NAL units corresponding for 1 frame of video in a byte stream

OK, it sounds like it doesn’t really provide a ‘byte stream’, but instead provides a chunk of data - for each frame - that consists of multiple NAL units, each with a ‘start code’ in front.  If that’s the case, then you don’t need the full parsing overhead of “H264VideoStreamFramer”.  Instead, you can parse this chunk of code much easier, with just a handful of lines of code.

What I would suggest in this case is define your own filter (a subclass of “FramedFilter”) that receives each chunk of data from the encoder, and then delivers, one at a time, the NAL units that it contains - with presentation times, but without ‘start codes’ - to a downstream “H264VideoStreamDiscreteFramer”.  This will be a lot more efficient that using a “H264VideoStreamFramer”.


> Thanks for advise, but passing presentation times separately from frames and around H264VideoStreamFramer seems far more complicated and clunky than this small change to framer, so I will stick with my solution.

OK, but remember this would complicate your obligations under the LGPL, because you would need to distribute your patch along with your product (so that your customers could - whenever they wished - replace the LIVE555 libraries with their own version).  Whereas if instead you use the existing, unmodified LIVE555 code with your own subclasses, then you wouldn’t need to distribute any of your own code.
	See http://live555.com/liveMedia/faq.html#copyright-and-license


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20150529/dc9d6ab9/attachment.html>


More information about the live-devel mailing list