On Fri, 2011-03-04 at 15:43 -0300, Tiago Katcipis wrote: > And what is the purpose of FsRtpStream since all the job is done on > FsRtpSubStream ?
A FsRtpStream is there because this is what is used for candidates and transmitters and stuff. And it is what is in the API, a Stream is a Participant in a Session. > I finished the FsRtpSubStream diagram and updated the FsRtpConference > one: > > http://www.inf.ufsc.br/~katcipis/farstream/farstream.png > http://www.inf.ufsc.br/~katcipis/farstream/farstream-rtpsubstream.png Looks good > > > The rest of your diagram seems fine. You're missing the > discovery thing > too (on the send side). > > I was planning on documenting this on the send pipeline (FsRtpSession > diagram): > > http://www.inf.ufsc.br/~katcipis/farstream/farstream-rtpsession.png > > Can you explain better how the "discovery thing" works? (I'm taking a > look at the fs-rtp-session code, but somethings are hard to get). The discovery thing is pretty simple. For some codecs (like THEORA), to produce all the parameters that you want to send the other side, you need to process some data, to get at least the caps from the incoming side. So what the discovery stuff does is that, for these codecs, it creates a small pipeline like "codecbin->fakesink" and waits for the caps to bet set after the codecbin and uses those to complete the codecs. When they have all been discovered, the "codecs-ready" property becomes true. > I guess these files should have a bit more documentation on > what they're > supposed to do. > > The codecbin, blueprint, etc part is pretty hard to understand (if > someone wants to understand the final pipeline that will be built), is > there a reason why decodebin and encodebin are not used to build the > send/receive pipelines? it seems you use an autoconvert element and a > list of factories, never read about autoconvert before. First, encodebin did not exist when this was written. Decodebin is not really suitable, because for RTP, you need to discover all the possible codecs before starting the call (so before getting any data), so that the codecs can be negotiated with the other side. While decodebin just decodes as it goes along. A Blueprint is just a simple structure that defines a codec (as RTP sees it), so it includes the codec's info (a FsCodec), the rtp and media caps (that is the caps after and before the payloader), and the list of factories to make an encoding or decoding blueprint for this codec. So in almost all cases, these lists will only contain a encoder/payloader pair and a decoder/depayloader pair. That said, there is one strange case, H263-1998/H263-2000, where (in ffmpeg) there are two different encoders (ffenc_h263 and ffenc_h263p) to be used depending on the exact parameters. The way we solved this is by putting both of these in autoconvert and letting it decide according to the caps. The code is fs-rtp-discover-codecs is kind of gash, but it works (and hasn't changed in many years). I hope that helps. -- Olivier Crête olivier.cr...@collabora.co.uk
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------------ What You Don't Know About Data Connectivity CAN Hurt You This paper provides an overview of data connectivity, details its effect on application quality, and explores various alternative solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________ Farsight-devel mailing list Farsight-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/farsight-devel