<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div>Based on the testRTSPClient example, I've gotten a stable RTSP connection working on my target platform; in this case to a video+audio RTSP source.  But, now I'm struggling to figure out the next step.  My custom MediaSink classes do not receive any frame data via afterGettingFrame()</div></blockquote><div><br></div>That is the first thing that you should fix.  Note that when the (non-static) "DummySink::afterGettingFrame()" function ("testRTSPClient.cpp", lines 479-500) is called, a complete frame will have already been delivered into "fReceiveBuffer".  Note that our "DummySink" implementation doesn't actually do anything with this data; that's why it's called a 'dummy' sink.</div><div><div><br></div><div>If you wanted to decode these frames, you would replace "DummySink" with your own "MediaSink" subclass.  It's "afterGettingFrame()" function would pass the data (at "fReceiveBuffer", of length "frameSize") to a decoder.</div><div><br></div><div><br></div><blockquote type="cite"><div>, but guessing there is significantly more logic required in these classes than shown in testRTSPClient.</div></blockquote><div><br></div>Not really...</div><div><br></div><div><br><blockquote type="cite"><div><div>What's a 'frame', exactly</div></div></blockquote><div><br></div>It's a complete unit of data that can be passed to a decoder.  The specific details depend on the specific (audio and/or video) codecs that you're receiving.</div><div><br></div><div><br><blockquote type="cite"><div><div>And how about these higher-level MediaSinks - do those work right out of the box?  Seems too good to be true.  Let's say I had AAC+VP8 streams coming in.  Would I conditionally create a MPEG4LATMAudioRTPSink (what if it's non-LATM MPEG4?) and a VP8VideoRTPSink in continueAfterSETUP() based on inspecting the subsession?  I suppose I will have to try this out myself ;)</div></div></blockquote><div><br></div>No, you're confused here.  The "*RTPSink" classes are used only for *transmitting* RTP packets.  I.e., they're used by servers, not clients, and are therefore not classes that you would use.</div><div><br></div><div>If you want to decode (and then play) the received data, then you would need a decoder for each media type.  Note, however, that our code *does not* include any decoders.  For that, you would use a separate software library - or decoding hardware.</div><div><br></div><div><br><blockquote type="cite"><div><div><div>I know we're encouraged to study the examples and browse the library source, but there is a LOT to scan without having a roadmap!  A lot of these examples seem to have more to do with serving rather than consuming streams, can someone point out a good one for study?  In the class graph I also see some specific MediaSink classes, e.g. MPEG4ESVideoRTPSink.  Would it make more sense to study these implementations?  I guess I'm struggling to understand the high-level roadmap of information.  </div></div></div></blockquote><div><br></div>Maybe you should begin by explaining what it is specifically that you're trying to do...<br></div><div><br></div><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>