<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div>I am using SimpleRTPSink with my frame source (based on FramedSource).</div></blockquote><div><br></div>By this I hope you mean "a subclass of FramedSource".</div><div><br></div><div><br><blockquote type="cite"><div> The frame may be small, so SimpleRTPSink packs several frames into a single packet. That's right, I wish it to do so. I have nevertheless troubles to realize, how to make SimpleRTPSink flush its packets in a time manner, after for example the first frame of a packet has 10ms overdue time. Is there an easy way to achieve sending the not-yet-full packets in time?</div></blockquote><div><br></div>Yes, you should be able to do this by using a subclass (that you would write) of "SimpleRTPSink", and reimplement the virtual function</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>virtual
  Boolean frameCanAppearAfterPacketStart(unsigned char const* frameStart,
                                         unsigned numBytesInFrame) const;</div><div><br></div><div>This function is called whenever a frame is small enough to fit within an outgoing packet, at other the first position within the frame.  By default (in "SimpleRTPSink") this function returns True (because you have presumably created "SimpleRTPSink" with the "allowMultipleFramesPerPacket" parameter set to True (its default value).  However, you can redefine this function - in your "SimpleRTPSink" subclass - to return either True or False, depending on whether or not you want to include this frame in this outgoing packet.</div><div><br></div><div>Now, because "frameCanAppearAfterPacketStart()" is called only for the (potentially) second and subsequent frames within each outgoing packet, you probably don't have enough information to make your decision just by subclassing that function.  So you will probably also need to redefine another virtual function - "doSpecialFrameHandling()".  That function is called for each frame - regardless of its position within the outgoing packet.  You'll probably need to redefine that function - in particular, noting the "fragmentationOffset" parameter.  If that parameter is 0, then the frame is the first frame in the outgoing packet; otherwise, it's the second or subsequent frame within the packet.  Of course, your subclass's implementation of "doSpecialFrameHandling()" will need to call the base class implementation - i.e.</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>SimpleRTPSink::doSpecialFrameHandling( ... )</div><div>at the end.</div><div><br></div><div><br><blockquote type="cite"><div> I think of calling MultiFramedRTPSink::sendPacketIfNecessary() on timer</div></blockquote><div><br></div>Absolutely not!  And you should not even have considered doing this, because that function is "private:", and you know that you're not supposed to modify the supplied code.</div><br><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>