<div dir="ltr"><div><div>Thanks Ross,<br><br>I will have a look at <span style class="">VLC</span> as you suggest. Sorry if I was not clear enough, in my app (written in plain C) we work at frame level (compressed or not, we already wrapped <span style class="">libavcodec</span>, so we work at <span style class="">AVFrame</span> level rather than at <span style class="">NAL</span> Unit level for h264) in order to transform the image and resend again, so we deliver frame by frame to the decoder as the in following sequence: coded frame -> decoder -> process raw frame  -> encoder -> coded frame. <br>

<br>So my concern and my question was more about <span style class="">recieving</span>/sending frames than <span style class="">recieving</span>/sending packets, so that I was asking if inside <span style class="">livemedia</span> there is any buffer that stores packets, sorts them and compile them in frames. In our actual code we have a frame buffer (C linked list) where each node represents a frame which is composed by another buffer (C linked list again) that holds all the frame packets. We use linked linked lists because we sort packets dynamically as they arrive. Imagine I would like to start an RTPH264VideoSource to gather frames and resend them with RTPH264VideoSink, just dummy test, without decoding and rencoding. I guess I should use doGetNextFrame() method to retrieve the frames but I can't manage to understand how to control it (how do I know when the frame is ready? what happens if there is no new frame? etc.).<br>

<br></div><br></div>Thanks for your time Ross,<br>David<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/10/29 Ross Finlayson <span dir="ltr"><<a href="mailto:finlayson@live555.com" target="_blank">finlayson@live555.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div class="im"><div><blockquote type="cite"><div dir="ltr"><div>I may ask a very simple question, but I couldn't manage to figure it out by my self as I don't know livemedia library arch deeply. I was wondering if there is any kind of frame buffer implementation or this is out of livemedia scope.<br>



<br></div><div>I am thinking of moving my code to livemedia555 for an RTP streaming app (receiver and sender sides), but one of my major concerns goes about the buffer, where packets are stored (after being parsed, imagine h264 payload) and where coded frames are stored (a collection of packets). At which classes should I have a look to understand how the buffers works? <br>

</div></div></blockquote><div><br></div></div></div>I'm not sure I completely understand your question, but 'reading between the lines', I think you are asking this because you want to *display* an incoming video stream (rather than just receive packets, as the "testRTSPClient" demo application does).<div>

<br></div><div>If that's the case, then you should first look at a media player like VLC <<a href="http://www.videolan.org/vlc/" target="_blank">http://www.videolan.org/vlc/</a>>, which uses the "LIVE555 Streaming Media" library's RTSP client implementation to receive a RTSP/RTP video (and/or audio) stream, and display it.</div>

<div><br></div><div>If you want to program something like this yourself, however, then note that you will need decoding (i.e., codec) software (or hardware) to translate the (compressed, encoded) H.264 video NAL units into displayable video frames.  Note, however, that the "LIVE555 Streaming Media" software *does not* include any codec (video decoding) software; you would need to get that from somewhere else.</div>

<div><br></div><div>However, if you have video decoding software (or hardware), then you can easily fit this into a LIVE555-based receiver application.  See, for example, the comments at line 133 of "testProgs/testRTSPClient.cpp".</div>

<span class="HOEnZb"><font color="#888888"><br><br><div>
<span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;white-space:normal;font-family:Helvetica;word-spacing:0px"><span style="text-indent:0px;letter-spacing:normal;font-variant:normal;text-align:-webkit-auto;font-style:normal;font-weight:normal;line-height:normal;border-collapse:separate;text-transform:none;white-space:normal;font-family:Helvetica;word-spacing:0px">Ross Finlayson<br>

Live Networks, Inc.<br><a href="http://www.live555.com/" target="_blank">http://www.live555.com/</a></span></span>
</div>
<br></font></span></div><br>_______________________________________________<br>
live-devel mailing list<br>
<a href="mailto:live-devel@lists.live555.com">live-devel@lists.live555.com</a><br>
<a href="http://lists.live555.com/mailman/listinfo/live-devel" target="_blank">http://lists.live555.com/mailman/listinfo/live-devel</a><br>
<br></blockquote></div><br></div>