<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class="">In the example program you have the ourRTSPClient with a StreamClientState object attached. You "strobe" the session object to cause the client to pump frames through.</span></div></div></div></blockquote><div><br class=""></div>I don’t know what you mean here. I don’t use the word “strobe” anywhere in the code or documentation. Please stop making up your own terminology to describe our code!</div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="color: rgb(31, 73, 125); font-family: Calibri, sans-serif; font-size: 11pt;" class="">Looking at these two pieces together, I see what I need, but I also see two disparate paradigms. The framer wants a FramedSource and RTSPClient presents a Media source. RTSPClient understands RTSP, the framer understands H264. But they don't fit together in any way I can see. I see a Framed paradigm and a Media paradigm.</span></div></div></blockquote><div><br class=""></div>You need to completely discard whatever view (or ‘paradigm’) that you have of the code, because it’s at best confusing, and at worst completely wrong!</div><div><br class=""></div><div>Instead, start thinking of the code this way (which corresponds to what it actually does!):</div><div>----------</div><div>Your RTSP client application (again, I recommend using “testRTSPClient” as a model) would consist of a “MediaSink” object (in the “testRTSPClient” code, this is called “DummySink”), which receives data from a “FramedSource” object (in the “testRTSPClient” code, this is "scs.subsession->readSource()”). The application starts the flow of data by calling “startPlaying()” on the “MediaSink” object. (This is done just once.)</div><div><br class=""></div><div>The “MediaSink” object receives one ‘frame’ at a time. (For H.264 video, this ‘frame’ is actually a H.264 NAL unit; not a complete ‘picture’.) Your “MediaSink” subclass would do whatever processing that you want on these incoming H.264 NAL units. Once again, I suggest that you review the code for “DummyRTPSink::afterGettingFrame()” ("testRTSPClient.cpp”, lines 500-521). In your own application, you would rewrite this code to do whatever you want to the incoming NAL units.</div><div><div>----------</div><div class=""><br class=""></div></div><div>(And yes, as Jeff Shanab implied, you could write a “FramedFilter” subclass, and insert an object of this subclass in front of the ""scs.subsession->readSource()”, and then modify your call to “FramedSink::startPlaying()” accordingly. But before you start playing around with “FramedFilter”s, you first need to understand the basic “testRTSPClient” application code - and, right now, you seem to be way away from this.)</div><div><div><br class=""></div><div>If you don’t want to use the “testRTSPClient” code as a model for your own application, then that’s your choice - but then you can’t expect much help (at least, not for free) on this mailing list.</div></div><br class=""><br class=""><div apple-content-edited="true" class="">
<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; "><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; ">Ross Finlayson<br class="">Live Networks, Inc.<br class=""><a href="http://www.live555.com/" class="">http://www.live555.com/</a></span></span>
</div>
<br class=""></body></html>