[Live-devel] DeliverPMT

Jeff Shanab jshanab at smartwire.com
Tue Dec 20 09:48:45 PST 2011


I am trying to force the MPEG2TransportStreamMultiplexor class to send a PAT, then an PMT and then a keyframe then the diff frames, exactly in that order. In Contrast to the default once per 100 and once per 500frames. I think this is what I will need to simplify my HLS segmenter flter that follows.

I have made a copy of this class and am modifying it for use. But I keep getting the frames out of order and I don't understand why.

Inside MPEG2TransportStreamMultiplexor::doGetNextFrame when I detect the first keyframe. I call deliverPATPacket(); then deliverPMTPacket(); then the frames deliverDataToClient.  I have had to put aftergetting(this) after each call to keep it progressing but when I look at the output I end up with the PAT packet, then a whole bunch of video packets, then the PMT packet, the PMT gets delayed.

It seems like I need to put all 3 in the buffer then call afterGetting(this) but it just stops on the PMT packet.

The muxer is slightly different from the other filters because of the one to many frame flow and the buffer recycling and I am a bit lost.  (I need to draw a sequence diagram :( )

Any ideas what I may be  missing here?  How can the frames seem to get out of order? Is it per programID because of the sourceRec and that makes them independent?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20111220/ac56ce08/attachment.html>


More information about the live-devel mailing list