[Live-devel] OnDemandMediaSubsession, DeviceSource, SDP
Ross Finlayson
finlayson at live555.com
Sun Jun 17 12:40:59 PDT 2012
> I have subclassed FramedSource similarly to the DeviceSource
> example to accept calls from a separate thread using the
> signalNewFrameData() method. It parses the mdat data coming
> from an iPhone mp4 hardware encoder, which should be
> an AVC H264 Stream. This "file stream" parser replaces
> the NAL Lengths with NAL start codes 0x00000001
> (and delivers this modified stream buffer to fTO).
[...]
> createNewStreamSource->DeviceSource->return H264VideoStreamFramer
Because your input source is delivering discrete NAL units (i.e., one-at-a-time), then it would be better to use a "H264VideoStreamDiscreteFramer", not a "H264VideoStreamFramer". Each 'frame' (really "NAL unit") must be delivered to the "H264VideoStreamDiscreteFramer" *without* a preceding start code.
> Unfortunately when extracting this data
> OnDemandServerMediaSubsession fails to produce any SDP
> description of the stream, I can only assume this is because
> the SPS PPS are not being sent in-Band the h264 data from
> the MP4 mdat contents.
Yes.
> createNewRTPSink->return H264VideoRTPSink.
This is where you can pass the SPS and PPS NAL units, because they are not present in-band. Note - in "liveMedia/include/H264VideoRTPSink.hh" - the optional variants of the "createNew()" function, which allow you to pass the SPS and PPS NAL units, either directly, or as a comma-separated pair of Base-64-encoded strings.
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/20120617/2b8c5990/attachment.html>
More information about the live-devel
mailing list