Sophie

Sophie

distrib > Mandriva > 10.0 > i586 > by-pkgid > ca459dcd5ef829a124b866a552749127 > files > 7

gphone-0.5.2-6mdk.i586.rpm

GNOME-O-PHONE
-------------

Gphone is an internet telephone.  As the name implies, it aims to be
fully gnome-groovy, but that hasn't quite happened yet.  Gphone is
definitely a work in progress and you probably shouldn't bet your
business on it.  Don't be too hard on the program, though -- although
the user interface is mighty rough, gphone does actually work pretty
well.  I've only tested the program over ethernet, but the data rate
should be low enough to work over a reasonable modem connection.

The protocol is nominally RTP/RTCP, and gphone complies well enough
with the standard to be able to talk to speakfreely.  I've only tested
the UNIX version of speakfreely, but as long as you tell sfmike to use
RTP and GSM compression, it seems to work fine.  Maybe someday I'll
add in support for other codecs; encryption is a little less likely
because I'd just as soon not open that legal can of worms.  One easy
way to get some security would be to modify my program rtptunnel to
tunnel the RTP protocol through a SSL socket instead of a straight TCP
socket.

Gphone supports full duplex if your sound card does.  I've had good
luck using the ALSA drivers for my SB16.

Gphone requires the GSM compression library available at
<http://kbs.cs.tu-berlin.de/~jutta/toast.html>.  To build gphone you
also need gtk 1.2 or later as well as version 1.2 of the popt library.
Up-to-date Linux distributions should include these libraries and any
others I'm forgetting.

If you try gphone, I'd like to hear from you.  Please send comments,
suggestions, bug reports, patches, donations, and job offers to
gphone@penguinpowered.com.  There is a mailing list for those
interested in gphone development.  You can subscribe at its
page, <http://lists.sourceforge.net/mailman/listinfo/gphone-list> and
send messages to gphone-list@lists.sourceforge.net.

To find the latest news about gphone, you can visit the gnome-o-phone
home page at <http://gphone.sourceforge.net/>.

Usage
-----

I'm not going to give too much detail here, because all of this should 
change soon.  The source code and gphone --help are your best bets for 
figuring this out.

To make a call, just do
    gphone -c <computer to call>
You can add -h for half duplex.

To wait for an incoming call just run gphone.

By default gphone listens on the standard RTP port, 5004.  On the
other hand speakfreely defaults to port 2074, so if you want to use
them together you'll have to tell at least one of them a different
port number.  Gphone uses -r to set the port it talks to and -l to set
the port it listens on.

Program structure
-----------------

I'll describe briefly the overall plan of the program, in case you
want to start tinkering.  You should realize that there were two
forces that guided my development.  First, I wanted to get something
usable with as little work as possible.  But I also wanted to use
things I was interested in learning about, like pthreads and gtk.
Good programming practices, robustness, scalability or any of the
other crap developers are supposed to pay attention to were not quite
as high on my priority list.  Still, if it didn't cost too much, I
tried to do things the right way.

Gphone now nominally uses the RTP/RTCP protocol described in RFC 1889
with the audio profile described in RFC 1890.  Gphone 0.1 used a
completely different TCP-based protocol, so version 0.1 and 0.2 can't
talk to each other.  If you have a problem getting UDP through a
firewall, my program rtptunnel might be helpful.

There are a lot of "half-measures" in the gphone code.  I've tried to
keep the user interface somewhat separate from the rest of the code,
but not when that meant expending any effort on design or coding.  And
I've used glib pretty liberally throughout the program.  Similarly,
I've let dependencies on the GSM library creep in, even though I know
I should be allowing for other compression schemes.

I've gotten rid of the ringer and the daemon from version 0.1.  The
only program you have to run now is gphone itself.  Unfortunately you
don't get the cool blinking ringer anymore; hopefully that
functionality will come back later.

Gphone is pretty multithreaded.  Gphone is my first pthreads program
(and my first gtk program), so if you see something that seems dumb to
you in my code, you're probably right.  The main thread is just
responsible for starting up the other threads.

First, the UI thread takes care of all user interface work.  There is
a status: all the threads look at this to see what state the program
is in and act accordingly.  The threads also have queues to pass
messages between themselves.

Anyway, there are two threads that do the real work.  One thread just
listens to the incoming sockets and handles whatever packets come over
the wire.  If speech comes from the other end, this thread decodes the
GSM frames and plays them.  The last thread is in charge of all
sending of packets.  It compresses the speech and sends it, and also
sends things like "switch direction" requests (if the program is in
half-duplex mode).

Acknowledgments
---------------

Quicknet Technologies very kindly donated an Internet PhoneJACK card
to help in porting gphone.  Thanks guys!

Copyright
---------

Gphone was written by Roland Dreier and is distributed under the GNU
General Public License.



$Id: README 1.11 Sat, 11 Dec 1999 23:53:26 -0600 dreier $



Local Variables:
mode: text
End: