FOSSRIT / Open-Video-chat

An open source video conferencing tool for the XO laptop
https://fossrit.github.io/projects/open-video-chat
GNU General Public License v3.0
17 stars 10 forks source link

Add RTP/RTSP Protocol #22

Open cdelorme opened 11 years ago

cdelorme commented 11 years ago

RTP could be used to encode and further improve upon latency. May not be possible in 0.10 GStreamer connections.

lmacken commented 11 years ago

You may want to look into the Farstream (formerly Farsight) GObject Introspection API.

http://cgit.collabora.com/git/farstream.git/tree/examples/gui/fs-gui.py

I tried getting this example app running with both farstream-0.1.2 (which is the farstream package in Fedora), and farstream 0.2.2 (farstream02 package). We were able to get some streaming white noise with 0.1, and 0.2 had issues detecting codecs. Either way, it was able to do the RTP handshake and actually start streaming raw udp.

This is the output from the latest 0.2 fs-gui:

send_local_codecs
check_send_local_codecs
fs-gui.py:521: Warning: g_value_get_pointer: assertion `G_VALUE_HOLDS_POINT
ER (value)' failed
  codecs = self.session.fssession.props.codecs
Codecs are not ready
send_local_codecs
check_send_local_codecs
Codecs are not ready

It feels like it's very close to working, and the Gi/Gst code is exactly what we wanted in OVC years ago.

lmacken commented 11 years ago

Obviously rawudp is fine for now, but in the long run it would be awesome to support ZRTP: http://www.zrtp.org There's already a gstreamer filter for it: https://github.com/wernerd/gstzrtp

cdelorme commented 11 years ago

Unfortunately it doesn't use telepathy to establish the connection, and the code looks like mad science to my eyes.

When my teammate Caleb (from HFOSS) was investigating it he said it seemed to need a specially encrypted value per connection or some such, and we thought about putting it into a constant, but if we want the user to be able to change any settings the code changed.

If there is time I'll look further into it, but I'll probably just use a Call Channel in telepathy to pass the stream.