For user documentation about linphone, run it and go to the help menu to read linphone's user manual...
or go to linphone's web site: http://simon.morlat.free.fr
Contact main author (Simon Morlat) at linphone@free.fr.


For DEVELOPER documentation, read these few lines:

Here is a short description of the content of the source tree.
- audio/ is the library used to access sound card from linphone, using a fixed set of functions (see audio/audio.c).
	These functions are actually pointers to other functions, that are driver dependant:
	* audio/alsa.c implements access to the sound card using alsa native library.
	* audio/oss.c implements access to the sound card using traditionnal oss api.
	* audio/loopback.c simulates a sound card that would have its input directly connected to its output. (test purpose)
	* audio/iodisk.c uses disk files instead of a sound card to record and play audio buffers.  (test purpose; used in sipomatic)
	The choice of the interface is done by calling audio_alsa_init(),audio_oss_init(),audio_loopback_init(), and audio_iodisk_init(). These functions can be called
	as many time as you want.
	* ring.c contains some functions to produce rings.
	
- lprtplib/ is a simple library to send and receive RTP packet. RTP is an ietf protocol designed to transport real-time media data over networks.
	The api of lprtplib is very simple, see lprtplib/rtp.h for a complete description of it.
	
-	osipua is user-agent library based on the osip SIP stack (http://osip.atosc.org). This directory is also availlable separately
	on osip web site.
	
- gsmlib/ and lpc10-1.5/ are libraries that implement the GSM and LPC-10 vocoders (or codec). These are compression algorithm designed for voice. They can
	compress voice very efficiently. These libraries are not the complete ones I've pick up the core code only. See AUTHORS files in these directory
	for more information. A wrapper was done to access easily those library from linphone core: see files lpc10-1.5/lpc10_wrapper.c and
	gsmlib/gsm_wrapper.c to see the wrapper code. The base definition of the codec object wrapper is in src/codec.h and src/codec.c .
	Here is define a virtual class, that can be derivated to construct other codecs. lpc10_wrapper.c and gsm_wrapper.c implements
	their derivate class of the codec class.
	Using this object-wrapper mechanism, linphone is able to drive different codecs in the same way.
	If you want to contribute to linphone, I think implementing new codecs as described above is the best thing to do.

- src/	is the directory that contains the core files of linphone. It uses all libraries descibed above.
	* interface.c is the file generated by glade to construct the graphical interface.
	* callbacks.c contains the Gtk+ callbacks and callbacks of the sip library (we are called in these functions when we are invited, for example)
	* support.c is auto-generated by Glade.
	* LinphoneMain.c/LinphoneMain.h contains class&functions to read/save configuration in a file, detect local network interface.
	* io.c / io.h contains the code to exchange data from to network to sound card and vice-versa. This code will strongly change
		int future releases to be object oriented.
	* main.c contains the main() function of linphone, and the gtk_main().
	* sipomatic.c / sipomatic.h contains the code for sipomatic, the test program that auto-answer to linphone calls. If you want to understand
		how linphone runs, this is a good start example.
		
- share/ contains sound files: ring.raw (the ring of linphone), hello.raw (the annoncement played by sipomatic) and html files of the user manual.

Contact me (linphone@free.fr) if you want more information, or if you want to help the linphone project.
If you want to help, I think the best things to do are codec implementation (A-law, Mu-law, ADPCM, celp-3.2... and others ?).

Simon MORLAT

	
