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

Attachment: 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

Reply via email to