Farsight - Audio/Video Communications Framework
The Farsight project is an effort to create a framework to deal with all known audio/video conferencing protocols. On one side it offers a generic API that makes it possible to write plugins for different streaming protocols, on the other side it offers an API for clients to use those plugins.
The main target clients for Farsight are Instant Messaging applications. These applications should be able to use Farsight for all their Audio/Video conferencing needs without having to worry about any of the lower level streaming and NAT traversal issues.
Farsight forms an integral part of the Telepathy framework. Using Stream-Engine, it is bound by D-Bus and the Telepathy Media Stream Spec to the Connection Managers and is used for all their streaming requirements.
Telepathy and Farsight constitute the first implementation of the Jingle XMPP protocol.
Farsight deals with all the streaming specific parts of the protocol and leaves the signaling to the clients. The Farsight plugin API is heavily influenced by the ICE (Interactive Connectivity Establishment) RFC draft. This API allows for an easy interaction between the signaling and streaming parts of the sessions.
Farsight uses GStreamer for all it's media streaming needs. A large part of the project is to provide the required elements and improvements to GStreamer in order to deal with streaming protocols such as RTP.
Farsight is written in C/Glib and uses GObjects extensively. Python bindings are available for Farsight2. Stream-Engine also allows any applications written in languages that have D-Bus bindings to use Farsight by way of the Telepathy Media Stream API.
License
Farsight is licensed under the GNU Lesser General Public License, version 2.1 or later.
Documentation
The core API documentation is available for Farsight1 and Farsight2.
The H263/H263+/H263++ RTP fiasco is explained in H263Jungle.
A page documenting the new RTP design for GStreamer : GstRtpDesign. The new Farsight 2 API is being discussed Farsight2Design and the list of left todo Farsight2Todo
Available Plugins
RtpPlugin : Farsight offers a mature RTP plugin.
MsnWebcamPlugin : Farsight has an MSN Webcam plugin, but it needs to be ported to the new API.
YahooWebcamPlugin : Farsight has a Yahoo Webcam plugin, but it needs to be ported to the new API.
Available Transmitters
Transmitters are plugins that are used by Farsight plugins in order to implement lower level connectivity establishment methods such as ICE or GTalk-P2P.
RawUdp : This is a raw udp transmitter with external IP detection using STUN
- Multicast : Multicast UDP (only in Farsight2)
GoogleTalkP2p (libjingle) : This is a transmitter that uses libjingle to do GTalk-P2P (required for PC GTalk interoperability). This transmitter does decent NAT traversal based on older draft version of ICE (~6). (only in Farsight1)
nice (libnice) : This is a transmitter that uses libnice to do ICE (as defined in the ICE-19 draft). (being developed for Farsight2)
Darcs/Git repositories
Browse the Farsight development tree on darcsweb.
Fetch it using: darcs get http://darcs.collabora.co.uk/darcs/farsight/farsight
Browse the Gst-Plugins-Farsight development tree on darcsweb.
Fetch it using: darcs get http://darcs.collabora.co.uk/darcs/farsight/gst-plugins-farsight
Browse the Farsight2 development tree on gitweb.
Fetch it using: git clone git://git.collabora.co.uk/git/user/tester/farsight2.git
Releases
http://farsight.freedesktop.org/releases/farsight
http://farsight.freedesktop.org/releases/gst-plugins-farsight
http://farsight.freedesktop.org/releases/farsight2
Mailing list and IRC
You can reach the developers and other users of Farsight at our mailing list or in the #farsight channel on freenode.
Misc Pages and Links
Please report bugs in the freedesktop.org bugzilla.


