<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Aug 11, 2011, at 8:08 AM, Dave McMordie <<a href="mailto:mcmordie@gmail.com">mcmordie@gmail.com</a>> wrote:</div><blockquote type="cite"><p class="MsoPlainText">Great library-- it was a pleasure to integrate!<span> </span>We are transmitting a sequence of
uncorrelated image frames using a subclass of JPEGVideoSource.</p><p class="MsoPlainText">We would also like to transmit a stream of XML fragments
(one-to-one with the video frames) which contain information about each frame.</p></blockquote>Do "we" not have our own domain name? :-)</div><div><br></div><div>Rather than using a separate RTP stream for this per-frame XML data (which would require a separate RTP payload format, and a lot of extra code for both the server and receiver(s), is it possible to store this per-frame data somewhere within the JPEG frame itself? I.e., does the JPEG format allow for application-specific 'meta data' somewhere within the JPEG frame? If so, then this would be (by far) the best solution.</div><div><br></div><div>(Of course, you really shouldn't be streaming JPEG at all; it's a <i>terrible </i>codec for video streaming.)</div><div><br></div><div><br><blockquote type="cite"><div> What I have understood so far from previous threads is
that I can create a custom payload format using subclasses of MultiFramedSource
/ MultiFramedSync.<span> </span>I would then modify
the MediaSession::initiate method to add explicit support for this payload
format.<span> </span>On the server side, I also
create a new MediaSubsession containing the source/sink and add it to my
MediaSession.</div></blockquote><div><br></div>"MediaSession" and "MediaSubsession" are used only by receivers. Servers (transmitters) use "ServerMediaSession" and (subclasses of) "ServerMediaSubsession".</div><div><br></div><div>But you're correct. Unfortunately, to support a new RTP payload format in receivers, you need to modify the "MediaSession::initiate()" code. (Someday I hope to fix this, because it's better if developers don't have to modify the supplied code.)</div><div><br></div><div>Anyway, there isn't really a suitable RTP payload format for your application (except, perhaps, the payload type "text/t140", defined by RFC 4103 "RTP Payload for Text Conversation"). So you'd need to define your own.</div><div><br></div><div>But, as I noted above, the best solution would be to (somehow) store your per-frame XML data within each JPEG frame.</div><br><br><div>
<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>