what is this program ?
----------------------
this program is voice-over-ip program.
you can use it to talk with other people
which also use the program.
what are the requirements of this program ?
-------------------------------------------
all what you need is win95/98 and the Layer-3
codec installed on your computer. also, the
executable in the zip file was compiled with
the librarys from DirectX 7 SDK, so you should
also have DirectX 7 installed. somehow, I think
it might also work with DX6, but no promises.
how can I find out if I have the Layer-3 codec ?
------------------------------------------------
that is easy, first you open the control panel,
choose the 'Multimedia' icon, switch
the view to 'Devices', expand the 'Audio Compression
Codecs' node, and look for a codec by the name
of Layer-3.
how does this program work ?
----------------------------
this program uses the Layer-3 codec in order
to compress and decompress recorded sound.
this is the same compression used with the MP3
files, therfore the sound quality is excellent
and the size is small. it uses DirectSound and
DirectSoundCapture to play and record audio.
transfer is made through UDP packets.
is the program using any protocol while connecting
to another program on the other side of the line ?
--------------------------------------------------
no, there is no protocol, I started this program
with a couple of goals in mind: to make it as small
as possible and as fast as possible so the conversation
would be as close as possible to a phone conversation.
could the lack of protocol cause any problems ?
-----------------------------------------------
it causes no problems, it is merely causes some
inconviniecies(?), such as:
1) each sound packet is sent with an ID which
is incremented with each sent packet. the
program keeps track of the ID on the incoming
packets and will accept only packets which have
an ID equal or greater to its internal counter;
this prevents from delayed packets to be played
and also assures that duplicate packets will not
be played twice. this is a part of the aim to
make the use of this program resemble as much as
possible with a regular phone conversation.
when the program on one side is closed, the program
on the other side still expects packets with the
ID greater than the last one received, therefore if
the party which has closed the program will run it
again and connect to the same person, the other
person won't be able to hear anything because the
program will drop the packets until their ID reaches
to the last received ID. in this case, both persons
should close the program and restart the session.
2) the program should be run on both ends with the same
KBit rate (and the Stereo checkbox on or off); if not,
the sound played might be funny, but should not cause
the program to crash. the sound would be simply decompressed
improperly.
what if I just skipped that last big question above ?
-----------------------------------------------------
then you should know this:
1) if the program is closed on one side, the other
side has to close it too and both of them need to
restart the session.
2) both parties should use the same KBit rate / Stereo otions.
how am I supposed the to know IP of the other person I wish
to talk with ?
--------------
well, since most people on the net do not have static IPs, then
you need to use a messaging program such as ICQ or all the other
clones. you can know your IP at first when you are prompted to
type in the target IP. you will see in the list of interface
at least one IP which will be 127.0.0.1, which is the loopback
address and can be used to connect your program to itself.
most people would have the loopback IP and another one while
connected to the internet they are on a local IP network.
the selected interface will be your IP and that is the one
which the other person has to connect to.
If you wish to get more info about the IP interfaces on your PC
you can run the command 'WINIPCFG', a small program that comes
with windows.
which interface should I use ?
------------------------------
if you have a modem then you must first connect to
the internet prior to running the program. if only
the loopback IP (127.0.0.1) appears, than you should
simply choose cancel and run the program again.
usually you should choose the first interface on the
list, which will be your IP on the internet.
how can I use the 'Listen' option ?
-----------------------------------
the listen option simply makes the program
wait until it receives a valid sound packet
from anywhere on the net and connects to the
source of the incoming packet. it is very
simple.
what is the recording format of the sound ?
-------------------------------------------
the format is 11025hz & 16bit. a higher
frequency would require too much bandwidth.
what is the bandwidth requirements of the program ?
---------------------------------------------------
8KBit - 1000 bytes to 1200 bytes
16KBit - 2000 bytes to 2150 bytes
20KBit - 2400 bytes to 2600 bytes
what about the Stereo option ?
------------------------------
well, using the stereo option doesn't make much
sense unless you are going to play for the other
person a CD, otherwise it requires double the time
to compress which causes a bit more lag.
I see that I can choose between 1/10, 1/4, 1/3 & 1/2 of a second
transmission, what does it mean ?
---------------------------------
it means that the program will first record the fraction of a second
of your choice and then compress it and send it. the small the
fraction the more overhead traffic will be generated due to the
(IP + UDP + sound_packet) headers. usually the overhead is no problem
and 1/4 is the best choice for now.
also, using a smaller fraction, means a smaller delay in transmission
and therefore a more phone like conversation.
what about the compressing time of the audio, is my computer
strong enough ?
---------------
well, since we compress at such low bitrates there should be no problem;
a Pentium 100 should be sufficient. when the Transmission Rate is 1/4
on a P2-266Mhz maching, the compressing time is between 20-30ms which
is very reasonable.
but what about the lag, man, the lag ??
---------------------------------------
well, it works just about like this:
when operating on a transmission rate of 1/4 (250ms) recording,
then we have a delay of 250ms of the recording time, plus the
compressing time which is CPU dependant, plus the time it takes
the packet to trave over the net, plus the decompressing time
which we might say that is almost insignificat, plus another
250ms which is the playing time of the sound packet.
for example, if it takes 500ms for a packet to traver from
one point to another on the net then the lag in one way would
be approx. 1020ms. this brings the total lag (both-ways) to approx.
2050ms which is quite excellent. there is one additional factor
which is computer dependat and that is the latency between the
playing of the sound by the program and the actuall sound being
generated by the speakers; according to the DirectX SDK this
should be approx. 20ms on hardware accelerated sound buffers, and
less than 150ms on software sound buffers. I have used the program
with ppl with a total lag of 4 seconds and althogh it wasn't like
a phone call, it was pretty close.
how can I cut the lag to a minimum ?
------------------------------------
well, you shouldn't be doing any heavy downloading while talking
or even not dowloading at all; also, intensive usage of the CPU by
other programs will cause the compressing time to be higher and might
even cause skips in the recording. also, check if your sound card can
accelerate sound, and if not try and use the primary