OpenH323 and OPAL Frequently Asked Questions
Automatically posted 21 February 2007
See http://www.vox
gratia.org/docs/faq.html for the latest version
Last updated 2 November 2006
Recent changes
2 November 2006 - Added new information to 8.2
3 October 2006 - Added new email address in 1.4
25 August 2006 - Cleaned up reference to GnomeMeeting
and some references to old versions in codec notes
30 July 2006 - Changed URL in 3.4 for viewing CVS via
browser
24 July 2006 - Added 10.7 on various calling services
1. GENERAL
1.1 - Where can I find the FAQ?
1.2 - My question is not answered by the FAQ, how can I
make a
suggestion?
1.3 - Who maintains the FAQ?
1.4 - Who owns and runs the OpenH323 mailing list and
OpenH323 web
site, and how do I contact them if I am having problems?
1.5 - The FAQ describes something that sounds like my
problem, and
it refers to a document that I don't really understand. I
don't have
time for all of this - can I just email someone or contact
them via IM
and get them to explain it all to me?
1.6 - I'm using pwlib 1.15.0 and openh323 1.5.2 from the
openh323.org site, and I have a problem. Will anyone help
me?
1.7 - Not used
1.8 - What is OPAL?
1.9 - What are the development plans for OpenH323 and
OPAL?
1.10 - What were the H.323 security vulnerabilities
reported by
the NISCC, and how do they affect OpenH323?
1.11 - Not used
1.12 - What is the license used for PWLib, OpenH323 and
OPAL, and
why wasn't the GPL used?
1.13 - What restrictions are placed on the software can I
combine
with PWLib, OpenH323 and OPAL?
1.14 - What license restrictions are placed on changes I
make to
PWLib, OpenH323 and OPAL?
1.15 - Where did PWLib, OpenH323 and OPAL come from, and
who is
responsible for it now?
2. MAILING LIST
2.1 - How do I subscribe to the mailing list?
2.2 - How do I unsubscribe from the mailing list?
2.3 - How do I make a posting to the mailing list?
2.4 - What is the mailing list used for?
2.5 - What is the mailing list *not* used for?
2.6 - There is too much traffic on the mailing list. Is
there a
digest?
2.7 - Is there an searchable archive of the list
available?
2.8 - Are there any rules?
2.9 - Who enforces the rules?
2.10 - How can I ensure someone will answer my question?
2.11 - But I really need an URGENT answer to my question?
2.12 - Who answers questions on the list?
2.13 - I want to help by answering questions? How do I do
this?
2.14 - What are the mailing lists on SourceForge used for?
2.15 - Why aren't there separate lists for users and
developers
like other projects?
2.16 - Can I ask questions about how to
use/debug/understand
another H.323 stack?
3. DOWNLOADING CODE
3.1 - Where can I download source code from?
3.2 - Where can I download binaries from?
3.3 - Where can I get the very latest source code from?
3.4 - How do I access the CVS repository?
3.5 - Where can I get ZIP versions of the source archives?
3.6 - How do I know what version to download?
3.7 - Where can I download a particular version of the
code?
3.8 - Why isn't the latest code and information on
openh323.org,
and why don't you do something about it?
3.9 - What are Janus, Pandora, Mimas, Atlas and Phobos?
3.10 - Where can I download the old PWLib GUI code
3.11 - Why is the configure.in file is missing when I
extract
source code from the CVS?
4. COMPILING THE CODE
4.1 - The code does not compile - what is the problem?
4.2 - Microsoft Visual Studio will not load the DSP and DSW
files
provided with OpenH323
4.3 - I know the OpenLDAP/OpenSSL/Foobah library on my
system is
broken, but OpenH323 uses it anyway. How do I prevent
this?
4.4 - How do I cross compile OpenH323 for another
platform?
4.5 - Are there detailed instructions for building
OpenH323/PWLib
on Windows?
4.6 - Can I compile OpenH323/PWLib using VS.NET 2003,
VS.net 2005
and Visual C++ 2005 Express Edition?
4.7 - How do I fix the Windows build error "Cannot
open include
file: 'ptbuildopts.h': No such file or directory"?
4.8 - How do I fix the Windows build error
"Configuring Build
Options This program cannot run in DOS mode Error
executing
c:windowssystem32cmd.exe" ?
4.9 - How do I fix the errors in vfakeio.cxx starting at
line 411
like "newline in constant", "too many
characters in constant", "syntax
error: string"?
4.10 - How do I report a bug in the code?
4.11 - How do I fix errors about a missing function called
PIsDescendant or IsDescendant ?
4.12 - How do I fix errors about missing include files
like
"gsmcodec.h" or "lpc10codec.h" ?
4.13 - How do I fix errors like "Cannot open source
file:
getdate_tab.c': No such file or directory"?
4.14 - How do I compile OpenH323 on Solaris?
4.15 - How do I make the code smaller?
4.16 - How do I submit patches to the code?
4.17 - How do I fix the following error on when compiling
using
MSVC 6 "WARNING: the following file requires
upgrading:
C:Program FilesMicrosoft Visual StudioVC98INCLUDEXTREE
Please
run 'msvc6chk upgrade' to upgrade this file"?
4.18 - How do I stop my program from immediately crashing
with a
dialog saying"The application failed to initialise
properly. Click on
OK to terminate the application" when I use the DLL
versions of PWLib
and OpenH323, even though the statically linked versions
work OK?
4.19 - How do I fix the following error on Windows when
building
PTLIB.DLL/OPENH323.DLL "dllmain.obj : fatal error
LNK1202:
"d:pwlib.msvclibptlib.pdb" is missing
debugging information for
referencing module" ?
4.20 - How do I fix the following error when compiling
OpenH323
"This program cannot be run in DOS mode. Error
executing
c:windowssystem32cmd.exe. asnparser.exe - 1
error(s), 0
warning(s)" ?
4.21 - I am compiling Pandora or Janus patch 4 - where is
the
ASNParser?
4.22 - Where is pwrc, openphone and all of GUI classes?
4.23 - How do I fix warnings about PVXMLSession and
OpalVXMLSession not found compiling the
opennivr/vxmltest/woomera
programs?
4.24 - The configure program for PWLib or OpenH323 is
finding the
wrong version of a library - how do I stop this?
4.25 - I used to be able to compile PWLib without any
problems,
but now I get warnings like this "Please
remove
pwlibincludeptlibmsos from the tool include path and
from the
pre-processor options for this project" - how do I fix
this?
4.26 - How do I fix errors compiling
asn_grammar.y/asn_grammar.cxx?
4.27 - When I compile pwlib I get warnings like
"../common/getdate.y: conflicts: 8 shift/reduce, 18
reduce/reduce" -
is this normal?
4.28 - When I compile pwlib I get a warning like "In
static member
function `static std::ostream&
PTrace::End(std::ostream&)': warning:
unused variable 'rb' - is this normal?
4.29 - How do I fix link errors about missing functions
when
compiling DLLs on Windows?
4.30 - How do I link applications statically in Windows?
4.31 - How do I link applications statically on Unix?
4.32 - How do I stop configure from finding the wrong
header files
on Windows?
4.33 - How do fix errors about missing MSVC80.DLL or
MSVCR80.DLL
files when debugging using Visual C++ 2005 Express
Edition?
4.34 - How do I fix gcc errors about
"PAtomicInteger" when
compiling OpenH323 or OPAL?
4.35 - I cannot find the Console Components library files
(ptclib.lib and ptclibd.lib) in recent builds of PWLib.
Where are
they?
5. CODECS
5.1 - Why is there no G.723.1/G.729 codec in OPAL or
OpenH323?
5.2 - Can I use the ITU reference code for G.723.1 and
G.729?
5.3 - Where can I get licensed G.723.1 and G.729 codec
implementations?
5.4 - Can I use the Microsoft G.723.1 codec in my Windows
program?
5.5 - How do I use the H.263 video codec with NetMeeting?
5.6 - How do I add my own audio or video codec to OPAL or
OpenH323?
5.7 - What audio codecs are supported by OpenH323?
5.8 - What video codecs are supported by OpenH323?
5.9 - Where can I get more information on plugin codecs?
5.10 - Why does a call using a compressed audio codec use
much
more bandwidth than expected?
5.11 - What is the effect of changing the number of frames
per
packet for an audio codec?
5.12 - Why am I getting bad audio quality even though I am
using
G.711?
5.13 - Why am I getting bad audio when using the G.729
codec?
5.14 - How do I get the same codec in each direction when
making a
call?
5.15 - Why are there so many Speex capabilities?
5.16 - Does OpenH323 support wide-band codecs?
5.17 - Can I use the H.263 video codec in my program?
6. DOCUMENTATION
6.1 - Where can I get a design document for OpenH323?
6.2 - Where can I find the help file for OpenPhone?
6.3 - Where can I find user manuals for the Openh323
programs?
6.4 - Is there a programming tutorial for OpenH323?
6.5 - Is there documentation on audio codec plugins?
6.6 - Where can I get documentation on the API for PWLib
and
OpenH323?
6.7 - What documentation is available for OpenH323?
6.8 - Where can I find the specification documents for
H.323?
6.9 - Is there a document on the configure.exe program used
for
configuring OpenH323 and PWLib on Windows?
7. USING OPAL and OPENH323
7.1 - When I make a call I get audio in only one direction.
What
is the problem?
7.2 - I am behind a firewall and cannot receive incoming
calls?
Why not?
7.3 - I can establish a connection but no audio is
transferred.
What is wrong?
7.4 - How do I call NetMeeting with an OpenH323 client?
7.5 - I hear an echo when I speaking on a H.323 call - what
is
wrong?
7.6 - How can I test whether my client is working?
7.7 - I'm sure I have found a problem with OpenH323 - how
do I
report it?
7.8 - Why am I getting bad audio even though I am using the
G.711
codec?
7.9 - Why am I getting bad audio when using the G.729
codec
7.10 - When I start OpenGK/OpenMCU2/OpenIVR as a windows
service
process it won't start due to "error 1053" or
similar error. How do I
fix this problem?
7.11 - How does OpenH323 support ENUM dialing?
7.12 - I am getting "Blocked" or other incorrect
results when
using STUN - how do I fix this?
7.13 - What are the different firewall types reported by
STUN,
and what do they mean?
7.14 - Why I am seeing messages like "RTP Packet
from
SSRC=xxxxxxxx ignored, expecting SSRC=yyyyyyyy" with
audio only in one
direction?
7.15 - How many simultaneous calls can OPAL/OpenH323
handle?
8. OPAL and OpenH323 applications
8.1 - What other Open Source projects use OPAL and
OpenH323?
8.2 - What commercial and closed-source software uses OPAL
and
OpenH323?
8.3 - What is the status of the OpenMCU program?
8.4 - How do I use OpenH323 with Asterisk?
9. Programming
9.1 - How do I create a program that uses OpenH323 for
call
control, but uses an external RTP device?
9.2 - How do get a list of the codecs supported by
OpenH323?
9.3 - When I enable PMEMORY_CHECK, I see all sorts of
memory
leaks reported. How do I fix these?
10. OPAL
10.1 - What is OPAL?
10.2 - Where can I download OPAL?
10.3 - How do I compile OPAL?
10.4 - How do I use SimpleOPAL to make a call?
10.5 - Is OpenH323 now obsolete or deprecated now that OPAL
is
released?
10.6 - Where can I find documentation on OPAL?
10.7 - How do I use OPAL to make a call to a telephone
number?
Change Log
____________________________________________________________
_____
1. GENERAL
1.1 - Where can I find the FAQ?
The FAQ is available at http://www.vox
gratia.org/docs/faq.html,
and is posted automatically every two weeks to the OpenH323
mailing
list. It also available in text form at
http:/
/www.voxgratia.org/docs/openh323-faq.txt
1.2 - My question is not answered by the FAQ, how can I
make a
suggestion?
Send any suggestions by email to craigs postincrement.com
1.3 - Who maintains the FAQ?
This FAQ is maintained by Craig Southeren of Post Increment
who can be
reached by email at craigs postincrement.com
1.4 - Who owns and runs the OpenH323 mailing list and
OpenH323 web
site, and how do I contact them if I am having problems?
The OpenH323 web site and mailing list are operated by
Quicknet
Technologies. Problems regarding the operation of the list
or the web
site should be sent to Bruce Ferrell at bferrell quicknet.net.
Update: this address seems to be not working -
try
bferrell baywinds.org instead
It is well known that the openh323.org web site contains
out-of-date
information and a very old version of the code. Feel free
to email
Quicknet regarding this problem but please don't email the
mailing
list, or me, as there is nothing we can do about it.
1.5 - The FAQ describes something that sounds like my
problem, and it
refers to a document that I don't really understand. I
don't have time
for all of this - can I just email someone or contact them
via IM and
get them to explain it all to me?
If you feel the urge to contact the core developers, then
understand
that you are asking them to give up their time and spend it
on your
problem. If you can't be bothered spending the time, then
why should
they?
So before doing emailing or contacting via IM, make sure
you do the
following:
1. Make sure you have read this FAQ, and any
associated
documentation, thoroughly,
2. Search the mailing list, or use Google, to find any
posts or
documents regarding your problem
3. If you don't understand the existing documentation at
all, then
you probably won't understand the answer. Consider
spending more
time trying to understand the problem
4. Ask specific questions, not general ones
5. Accept that the person you contact may be busy, or in
another time
zone, and cannot answer your question
6. Be polite
1.6 - I'm using pwlib 1.12.0 and openh323 1.5.2 from the
openh323.org
site, and I have a problem. Will anyone help me?
It is very unlikely that anyone will assist you with
problem in that
version of the code, because it has not been updated since
mid-2003.
There have been several mapor stable releases of the system
in that
time, so you should upgrade to the latest stable build and
see if your
problem persists. If it still happens with more recent
code, then ask
again.
And yes, it is known that that the openh323.org only
provides these
old versions of the code. See 1.4 for more information
1.7 - Not used
1.8 - What is OPAL?
See 10.1
1.9 - What are the development plans for OpenH323 and
OPAL?
The latest development plans and milestones can be found
at
http://
www.voxgratia.org/docs/milestones.html
1.10 - What were the H.323 security vulnerabilities
reported by the
NISCC, and how do they affect OpenH323?
The NISSC announced on 13 January 2004 that they had
discovered vulnerabilities in several implementations of
the
H.323 protocol. This announcement was also released by CERT
as
Advisory CA-2004-01.
All releases of PWLib after v1.6.0 contain fixes for
the
vulnerabilities demonstrated by the NISCC test suite. This
includes
the Janus and Pandora baseline releases and all subsequent
stable and
development code releases.
For more information, see
http://www.voxgratia.org/docs/niscc_006489-h323.html
1.11 - What is the status of the OpenMCU program?
OpenMCU was originally created in May 2000 by Craig
Southeren as a
experiment to investigate some ideas about how an audio MCU
might
work. A description of the original motivations can be
found at
h
ttp://www.southeren.com/blog/archives/000050.html.
Over the next two years the code was modified by Derek
Smithies and
Roger Hardiman to include video capabilities and to add
extra
functions such as support for multiple rooms. The final
result of this
effort was OpenMCU v1.7.1 which supported both video and
audio, but
was unstable and difficult to understand. Guilhem Tardy has
also
released some notes on how to add H.263 support to OpenMCU
at
http://www.salyens.co
m/ffcodec/
OpenMCU version 2 was started in March 2004 with support
from Citron
Networks with intent of fixing the known problems with
version 1. The
code was almost completely rewritten to be more modular,
and the
stability issues were addressed. This work ended around
August 2004
with a version that only supported audio.
A new project was started in March 2006 with the support of
Stonevoice
to restore video functionality to OpenMCU. This work is
proceeding,
and will result in a full-featured version of OpenMCU that
supports
video and audio.
1.12 - What is the license used for PWLib, OpenH323 and
OPAL, and why
wasn't the GPL used?
PWLib, OpenH323 and OPAL are available under v1.0 of the
Mozilla
Public License (MPL). The MPL was chosen specifically
because it
permits commercial software to be combined with OpenH323
and OPAL in
ways that the GPL does not, but still requires changes to
the released
code to be contributed back to the community. The exact
text of the
license used for OpenH323 can be viewed in the CVS here.
A more detailed description of the reasons why the MPL was
chosen can
be found in my keynote speech that was presented at the
Free
Software/Open Source Telephony Summit held by the German
Unix User
Group in Geilenkirchen, Germany in January 2005
1.13 - What restrictions are placed on the software can I
combine with
PWLib, OpenH323 and OPAL?
The MPL places no restrictions on what software you may
combine with
PWLib, OpenH323 or OPAL. You can use OpenH323 with closed
source
software or with Open Source software released under other
licenses,
provided that the other license allows this.
1.14 - What license restrictions are placed on changes I
make to
PWLib, OpenH323 and OPAL?
Paragraph 3.2 of the MPL license states:
"Any Modification which You create or to which You
contribute must
be made available in Source Code form under the terms of
this
License..."
For the purposes of the MPL, "Modification" is
defined as:
"...addition to or deletion from the substance or
structure of
either the Original Code or any previous Modifications.
When
Covered Code is released as a series of files, a
Modification is:
A. Any addition to or deletion from the contents of a file
containing
Original Code or previous Modifications.
B. Any new file that contains any part of the Original
Code or
previous Modifications."
In plain language, this means that any changes you make to
any
existing OpenH323 source file must be released under the
same MPL
license. This same applies to any new file that contains
part of any
previously released code.
However, the MPL places no restrictions on any new files
you create
that contain wholly original code. You can choose to
release (or not
release) these files under any license you choose. Please
note that
files not covered by the MPL will not be included in the
official
OpenH323 CVS.
1.15 - Where did PWLib, OpenH323 and OPAL come from, and
who is
responsible for it now?
PWLib was started by in 1992 by Robert Jongbloed and Craig
Southeren,
and the copyright for the code was transferred to an
Australian
company called Equivalence Pty Ltd in 1996. Work commenced
on OpenH323
in 1998, and PWLib and OpenH323 was released as Open Source
software
using the MPL license in the same year. The openh323.org
domain name
was acquired at this time, and the code was made available
via a
private server at that web address. OPAL coding started in
late 1999
and was released under the same license.
In early 2000, Robert and Craig sold Equivalence Pty Ltd
and the
rights to the openh323.org domain name to a US company
called Quicknet
Technologies Inc. They were also employed by Quicknet to
support
OpenH323 and to develop associated software. The OpenH323
CVS and
mailing list was moved to a new server managed by
Quicknet.
The OpenH323 CVS was moved to SourceForge in May 2003.
Robert and
Craig ceased employment with Quicknet in June 2003.
Currently, the CVS remains hosted on SourceForge while the
mailing
list is hosted by a mail server run by Quicknet who retain
the rights
to the openh323.org domain name and the ownership of
Equivalence Pty
Ltd. There have been no new contributions to the codebase
by Quicknet
or updates to the openh323.org web site since June 2003.
The project continues to grow and mature thanks to the work
of a
dedicated group of developers. The following people have
accepted the
responsibility of CVS write access as well as the ability
to close
patch submissions, and can be considered to be the people
responsible
for leading OpenH323, OPAL and PWLib:
Craig Southeren, Damien Sandras
The following developers have CVS write access and are
active
contributors to the project
Derek J Smithies, Simon Horne, Robert Jongbloed,
The following developers have CVS write access and
contribute
occasionally:
Shawn Hsiao, Vyacheslav Frolov, Yuri Kiryanov,
Kilian Krause, Roger Hardiman, Hannes Friederich
Bruce Ferrell administers the mailing list and SourceForge
web site on
behalf of Quicknet.
There are many more people (far too many to list) who have
contributed
time and code to the project. Please accept my thanks, and
my
apologies that you cannot be listed here.
____________________________________________________________
_____
2. USING THE OPENH323 LIST
2.1 - How do I subscribe to the mailing list?
The only way to subscribe is via the form on the this web
page:
htt
p://www.openh323.org/mailman/listinfo/openh323
2.2 - How do I unsubscribe from the mailing list?
The only way to unsubscribe is via the form at the bottom
of this web
page: htt
p://www.openh323.org/mailman/listinfo/openh323
2.3 - How do I make a posting to the mailing list?
Send an email to openh323 openh323.org
2.4 - What is the mailing list used for?
This list is used for asking any questions related to the
OpenH323
project or related technologies.
2.5 - What is the mailing list *not* used for?
This list is not used for:
* SPAM
* Questions unrelated to OpenH323
* Selling your company's services or products
* Finding someone to do your homework/final year
project/doctorate
2.6 - There is too much traffic on the mailing list. Is
there a
digest?
Yes.
When you subscribe to the list, make sure you select
"Yes" on the
option labelled "Would you like to receive list mail
batched in a
daily digest?". If you are replying to messages
contained in a digest,
please make sure you change the subject line to reflect
your question
rather than retaining the arbitrary digest title.
2.7 - Is there an searchable archive of the list
available?
Yes. See http://ww
w.openh323.org/pipermail/openh323/
2.8 - Are there any rules?
No flaming. No trolls. Be nice. Be warned.
2.9 - Who enforces the rules?
There are several enforcers who ensure that the rules are
applied
fairly and consistently. If you are emailed by Craig
Southeren or
Bruce Ferrell for being off-topic, for flaming, or if they
indicate
that an email thread is closed, it is suggested that you
listen
carefully unless you have kneecaps you no longer care
about.
2.10 - How can I ensure someone will answer my question?
There is absolutely no guarantee that someone will answer
your
question. If you want to maximise the chances of an answer,
do the
following:
* be polite
* provide enough information to allow the problem to be
duplicated
by someone else
* describe what you have already done to fix the problem
* don't bother saying you need a reply urgently
An excellent essay on how to ask questions be found
at
h
ttp://www.catb.org/~esr/faqs/smart-questions.html.
Another
excellent essay on how to report bugs can be found
at
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
2.11 - But I really need an URGENT answer to my question?
Then offer money. Lots of money. But don't bother posting
your request
multiple times unless you don't mind annoying lots of
people as well
as looking like a complete loser.
There is one class of posters who appear regularly asking
for urgent
help, and these are students asking for help in completing
their final
year project. Writing a VoIP application seems to be a
popular topic
for final year university students, and I'm sure that most
of them
actually do the work themselves. The excellent
Ekiga
(http://www.ekiga.org -
formerly GnomeMeeting) application
started in exactly this way.
As always, though, there are students who seem to think
that they can
leave everything to last minute and then just grab some
Open Source
project and fill in the missing bits. When this does not
work, they
post plaintive cries on the list asking if someone has
created what
they need. Strangely, they seem to think this is a
perfectly
reasonable request so when they don't get an answer, they
keep asking.
Amazing....
What they should do (apart from starting their project
earlier so they
have plenty of time to finish) is start working on the
code
themselves, using one of the sample programs as basis. When
they
encounter a problem, they should ask specific questions
that can be
answered by someone who has the time to do so. Asking
someone else to
provide the entire project working exactly to their
specifications is
just unreasonable - so please don't waste everyone's time
by asking.
2.12 - Who answers questions on the list?
Anyone may answer questions, but the most interesting ones
will
normally be answered by one of the principal developers who
include
Robert Jongbloed, Derek Smithies, Roger Hardiman, Damien
Sandras or
Craig Southeren. If you receive a reply from any of these
people, then
listen carefully because they are very likely correct.
2.13 - I want to help by answering questions? How do I do
this?
If you see a question for which you know the answer, or you
see a
reply that you know to be incorrect, then please join in
the
discussion. And be gracious if you make a mistake - being
wrong is not
a crime but being impolite certainly is.
2.14 - What are the mailing lists on SourceForge used for?
They are not used.
2.15 - Why aren't there separate lists for users and
developers like
other projects?
It was tried, and it failed.
2.16 - Can I ask questions about how to
use/debug/understand another
H.323 stack?
The OpenH323 mailing list is intended for questions and
issues related
to the OpenH323 stack. If you have questions about a
commercial H.323
stack, then you should contact the stack vendor for
support.
Commercial stacks are usually covered by non-disclosure
agreements, so
it's unlikely that anyone on the list could help you
without breaking
that agreement.
If you have questions regarding H.323 that are not related
to OpenH323
or any other specific stack, then the Packetizer site
(see
http://www.packetizer.com
a> has many excellent resources. It also
has information on several H.323 mailing lists (see
http:/
/www.packetizer.com/voip/h323/lists.html)
____________________________________________________________
_____
3. DOWNLOADING CODE
3.1 - Where can I download source code from?
The official source code archives (tarballs and ZIP files)
are
available from the downloads page of the OpenH323
SourceForge project,
which can be found at
http://sourceforge.net/project/showfiles.php?group_i
d=80674.
These same source archives (and occasionally some other
releases) can
also be found at the Vox Gratia web site at
http://www.v
oxgratia.org/downloads.html. These releases are
identical to those available on the SourceForge site as
they are
updated by the same maintainer from the official CVS
repository.
The Ekiga (http://www.ekiga.org -
formerly GnomeMeeting)
project also maintains source code tarballs (Linux only)
at
http://snapshots.seconix
.com and
http://snapshots.voxg
ratia.org. These are also created from the
offical CVS repository but use different scripts.
Please do not use the sources from the download page on the
offical
OpenH323 web site. These files have not been updated since
2003
3.2 - Where can I download binaries from?
The Ekiga (http://www.ekiga.org -
formerly GnomeMeeting) team
maintain up to date binary packages of OpenH323 and PWLib
for Linux at
at http://www.gnomemeeting.org/index.php?rub=5&pos=0
The XMeeting Project team maintains up to date binary
packages for
MacOS X at http://sour
ceforge.net/projects/xmeeting/
Other (very out of date) binaries can be found on the
OpenH323 site
3.3 - Where can I get the very latest source code from?
The latest source code is always in the CVS (see 3.4
below), but
the Ekiga team maintains very recent source code tarballs
for Linux at
http://snapshots.seconix
.com and
http://snapshots.voxgr
atia.org
If you are downloading from the repository, you have a
number of
versions to chose from:
Tag Description
(no tag) CVS Head
This is always the very latest, up to the minute, source
code. This
may not work or even compile, so use with caution
CURRENT the most recently compilable development source
code used by
the developers. Will compile and will run, but may contain
some
problems
PREVIOUS the last version of "CURRENT"
DEVEL the current released development code
STABLE the current stable released code
See 3.7 below on how to find a particular version of the
source
code in the CVS
3.4 - How do I access the CVS repository?
The CVS is hosted by SourceForge at
cvs.sourceforge.net:/cvsroot/openh323. See
http:
//www.voxgratia.org/docs/openh323_cvs.html for more
detailed
instructions. A web interface to the CVS can be found
at
http://
openh323.cvs.sourceforge.net/openh323/
See 3.3 above for information on development tags available
in
the CVS, and 3.7 below on how to find a particular version
of the
source code.
3.5 - Where can I get ZIP versions of the source archives
ZIP files are now created for recent released, but may not
be
available for some older version. Windows users can use
tar.gz source
archives without any problems if an archive program that
handles end
of line characters and binaries is used. We recommend
WinZIP. See
section 4.2, [184]4.7 and [185]4.8 for related problems
3.6 - How do I know what version to download?
Normally, the recommended stable version is the most recent
version
available from the SourceForge download page. The
recommended versions
are also shown on the Vox Gratia home page at
http://www.voxgratia.org
3.7 - Where can I download a particular version of the
code?
If the version you require is not available on any of the
download
sites (see 3.1 above) then you will have to extract it from
the
CVS repository (see 3.4 above).
Every release of OpenH323 or PWLIB is available as a CVS
tag. For
example, version 1.6.0 or PWLib is assigned the tag v1_6_0.
This is
useful for doing compares between versions.
3.8 - Why isn't the latest code and information on
openh323.org, and
why don't you do something about it?
The owners of the openh323.org domain name (Quicknet
Technologies,
Inc) maintain the www.openh323.org web site and the
openh323.org
mailing list. See 1.4 for how to contact Quicknet.
I'm no longer associated with Quicknet, so I cannot make
any changes
to the openh323.org web site or mailing lists, even though
I do have
write access to the CVS (as do several other non-Quicknet
people). I
maintain a website with the latest information on OpenH323
and OPAL,
and other projects at http://www.voxgratia.org
3.9 - What are Janus, Pandora, Mimas, Atlas and Phobos?
These names are all code names for various releases of
OpenH323 or
OPAL. A full explanation of all of the code names can be
found on this
page http://
www.voxgratia.org/docs/milestones.html, but the
important information is that the current stable releases
are Phobos
(for OPAL) and Atlas (for OpenH323). THe current
development builds
are Deimos (for OPAL) and Titan (for OpenH323)
For those who are interested, the OpenH323 code names come
from the
moons of Saturn. The OPAL code names come from the two
moons of Mars,
which appropriately translate to Fear (Phobos) and Panic
(Deimos).
Future code names for OPAL will come from star names - the
first one
will be Centauri.
3.10 - Where can I download the old PWLib GUI code?
This code is no longer supported and is not available for
download as
a tar.gz file or ZIP file. It can be extracted from the
OpenH323 CVS
using the "pwlib_win32" module
3.11 - Why is the configure.in file is missing when I
extract source
code from the CVS?
The configure.in files in PWLib and OpenH323 were renamed
to
configure.ac after the Pandora release as this is now the
preferred
extension for autoconf files. Unfortunately, the limitation
of the CVS
modules files do not allow for different file sets for
different
versions of the same module, which means that the
configure.in files
have been moved to the CVS "attic".
This means that extracting older releases of the source
from the CVS
by tag will not get the configure.in file. The file can be
retreived
using an explicit CVS checkout command to retrieve, as
follows:
cvs co -rPandora_release configure.in
We may be able to fix this problem at some time in the
future -
announcements will be made if this occurs
____________________________________________________________
_____
4. COMPILING THE CODE
4.1 - The code does not compile - what is the problem?
Yes, the code does compile but something on your system is
causing a
problem. You need to find what that problem is.
Here are some quick tips:
* Make sure that the pwlib directory is renamed to
"pwlib" and the
openh323 directory is "openh323", as the
original tarball may have
different names or your CVS client may have used the
module name
instead
* You need Bison and Flex installed as well as a compiler
and
associated tools. We recommend gcc and Make for Unix
platforms,
and Microsoft VS.net 2003 for Windows although other
environments
are supported. Note that the bison and flex package
provided as
part of the Windows build instructions (see 4.5) must be
installed in C:TOOLS unless you seriously know what you
are
doing.
* Check the ReadMe.txt files for more information
4.2 - Microsoft Visual Studio will not load the DSP and DSW
files
provided with OpenH323
You have downloaded the tar.gz source archive, and then
used an
archive program that does not correctly handle tar.gz files
under
Windows which has resulted in project files with incorrect
end of file
characters. MSVC cannot handle project files of this type,
although it
does handle source files in this mode.
To fix the problem, use a program like WinZIP that will do
the correct
conversion automatically, or use .ZIP version of the
archives. You can
also load the DSP and DSW files into a text editor and fix
the end of
line characters manually.
If you have this problem, you most likely will have the the
problems
described in 4.7 and [194]4.8 as well.
4.3 - I know the OpenLDAP/OpenSSL/Foobah library on my
system is
broken, but OpenH323 uses it anyway. How do I prevent
this?
Run "./configure" for PWLib or OpenH323 with the
appropriate flag to
disable the module you want to avoid. Use "./configure
--help" for a
list of these flags.
4.4 - How do I cross compile OpenH323 for another
platform?
Set the following environment variables before running
"./configure":
export CXX=<toolchain directory>/g++
export CC=<toolchain directory>/gcc
It may also be necessary to tweak LDFLAGS and CFLAGS using
environment
variables as well, or to disable certain features (see 4.3
above)
4.5 - Are there detailed instructions for building OPAL,
OpenH323 and
PWLib on Windows?
Instructions for compiling OPAL, OpenH323 and PWLib on
Windows can be
found at http:
//www.voxgratia.org/docs/opal_windows.html,
http
://www.voxgratia.org/docs/pwlib_windows.html and
h
ttp://www.voxgratia.org/docs/openh323_windows.html
4.6 - Can I compile OpenH323/PWLib using VS.NET 2003,
VS.net 2005 and
Visual C++ 2005 Express Edition?
Version 1.14 of OpenH323 and version 1.7 of PWLib and all
later
revisions contain full support for VS.NET 2003. See the
build
instructions (section 4.5 above) for full information in
compiling in
that environment.
Project files for VS.net 2005 and Visual C++ 2005 Express
Edition were
added on 26 June 2006 and are available in all later
versions of the
code. VC 5 Express Edition is available from:
http://msdn.microsoft.com/vstudio/express/visualc/dow
nload/
Louis Marascio has created a set of patches to allow
compilation of
earlier version of PWLib/OpenH323 with VS.net 2003. These
can be
downloaded from
h
ttp://www.louismarascio.com/vsnet2003-openh323.zip
4.7 - How do I fix the Windows build error "Cannot
open include file:
'ptbuildopts.h': No such file or directory"?
The file ptbuildopts.h is created from ptbuildopts.h.in by
the
pwlib/configure.exe program. If this step does not occur,
then
ptbuildopts.h is not created and the build process will
fail. You need
to determine why this is happening. See section 4.2 above
or
section 4.25 for a possible explanations
4.8 - How do I fix the Windows build error
"Configuring Build Options
This program cannot run in DOS mode Error
executing
c:windowssystem32cmd.exe" ?
This indicates that the file pwlib/configure.exe program
cannot be
executed, probably because it is missing or corrupted.
Download a new
version and make sure it is a working Windows executable.
See
section 4.2 above for a possible explanation
4.9 - How do I fix the errors in vfakeio.cxx starting at
line 411 like
"newline in constant", "too many characters
in constant", "syntax
error: string"?
This is a problem in older versions of PWLib, such as
version 1.5.3.
Download and use a later version of PWLib downloaded from
SourceForge
(see 3.1).
4.10 - How do I report a bug in the code?
The best way to report a bug is to use the Bug tracker at
the OpenH323
Source Forge site which can be found at
http://sourceforge.net/tracker/?group_id=80674&
;atid=560612
. Sending an email to the OpenH323 mailing list will
probably also
work, but we would much rather you used the bug tracker.
If you have a patch that adds a new feature, then please
use the patch
tracker as described in 4.16
4.11 - How do I fix errors about a missing function
called
PIsDescendant or IsDescendant ?
This error is usually caused by using source code that is
incompatible
with the version of PWLib that is being used. If you are
using a
version of PWLib prior to 1.7 (i.e. Janus or earlier),
then
IsDescendant function is available:
obj.IsDescendant(MyParticularClass::Class())
In PWLib 1.7 and later, the function IsDescendant was
replaced with
PIsDescendant in order to provide support for C++ RTTI (Run
Time Type
Infomation). This function is used as follows:
PIsDescendant(&obj, MyParticularClass)
4.12 - How do I fix errors about missing include files
like
"gsmcodec.h" or "lpc10codec.h" ?
These files were removed when support for audio codec
plugins was
introduced. See the document
http://www.voxgratia.org/docs/codec_plugins.html#conv
erting for
more information
4.13 - How do I fix errors like "Cannot open source
file:
getdate_tab.c': No such file or directory"?
You need to install the GNU bison and flex programs
program. See
http://www.voxgratia.org/docs/pwlib_windows.html#flexb
ison for
information on how to do this.
4.14 - How do I compile OpenH323 on Solaris?
Instructions can be found at
http://www
.voxgratia.org/docs/solaris.html
4.15 - How do I make the code smaller?
First of all, make sure you are using the Release build
("make opt"
for Unix) and the "No Trace" build for Windows.
If you do not need to create trace files, you can half the
size of the
Unix binaries by ensuring that OpenH323 is compiled with
the
PASN_NOPRINTON and PASN_LEANANDMEAN symbols defined, and
that
everything is compiled without the PTRACING symbol
Also make sure to turn off features that you do not need,
such as
video. This can be done changing defines in the
include/openh323buildopts.h file.
It is possible to get a Windows executable that includes
video and
audio with PWLib and OpenH323 linked statically, and
dynamic links to
everything else, in an .EXE that is under 1Mbyte (provided
tracing is
disabled)
Linux executable are always larger that the comparable
Windows
program, but it possible to get the same code in under
3Mbytes.
4.16 - How do I submit patches to the code?
If you have a code patch that adds a new feature or
capability, or
fixes a bug, then please submit it using the SourceForge
patch tracker
at http://sourceforge.net/tracker/?group_id=80674&
;atid=560614
If you are reporting a bug without a code patch, then
please use the
bug tracker as described in 4.10
4.17 - How do I fix the following error on when compiling
using MSVC 6
"WARNING: the following file requires upgrading:
C:Program
FilesMicrosoft Visual StudioVC98INCLUDEXTREE
Please run
'msvc6chk upgrade' to upgrade this file"?
There are several major defects in the STL header files
shipped with
MSVC 6. These defects are sufficient to crash programs
(like PWLib)
that rely on the correct behaviour of global static
variables.
Fortunately, the original authors of the STL libraries for
MSVC
have published new versions of the files necessary to
correct the
worst of these problems.
PWLib checks for the correct header file versions when a
new compile
is started, and will prevent the compile from continuing
until the
correct header files are installed. There is a
"one-click" solution to
this problem that will upgrade your files painlessly and
quickly - see
the following URL for more information:
http://www.voxgratia.org/
a>[213]docs/pwlib_windows.html#msvc_header
s or download the upgrade program from
http:/
/www.voxgratia.org/releases/msvc6chk.zip
4.18 - How do I stop my program from immediately crashing
with a
dialog saying"The application failed to initialise
properly. Click on
OK to terminate the application" when I use the DLL
versions of PWLib
and OpenH323, even though the statically linked versions
work OK?
This is probably because you have not upgraded your MSVC 6
header
files - see 4.17 above
4.19 - How do I fix the following error on Windows when
building
PTLIB.DLL/OPENH323.DLL "dllmain.obj : fatal error
LNK1202:
"d:pwlib.msvclibptlib.pdb" is missing
debugging information for
referencing module" ?
This error seems to be a result of the linker getting
confused about
the debugging information in the pdb file. The only
solution is to
delete the entire pwlib/lib or openh323/lib directory and
recompile
everything again. You will have to exit MSVC before you can
do this,
as the environment keeps open files in that directory.
Note that doing a "clean" is not sufficient, and
simply removing the
.pdb file is not enough either - the entire directory must
be removed.
4.20 - How do I fix the following error when compiling
OpenH323 "This
program cannot be run in DOS mode. Error
executing
c:windowssystem32cmd.exe. asnparser.exe - 1
error(s), 0
warning(s)" ?
If you are using PWLib 1.6/OpenH323 1.13 or earlier, then
you need to
compile the ASNParser. See
http://www.voxgratia.org/docs/pwlib_windows.html#asnpa
rser
4.21 - I am compiling Pandora or Janus patch 4 - where is
the
ASNParser?
The ASNParser is not included in the Pandora release,
because it was
decided to include the pre-processed ASN files directly
into OpenH323.
This greatly simplifies the build process for both PWLib
and OpenH323
and removes the need for the ASNParser. The ASNParser is
still
available in the OpenH323 CVS, if you want to see it.
Janus patch 4 includes the ASNParser sources, but it does
not need to
be compiled or used as it this release has also been
modified to
include the pre-processed ASN files.
4.22 - Where is pwrc, openphone and all of GUI classes?
The time and effort and required to maintain the GUI code
became
unmanageable, especially when there are excellent
multiple-platform
GUI toolkits like Qt and wxWindows already available. As a
result, the
GUI code is no longer included in the baseline release
archives. This
includes the all of the source trees
pwlib/src/pwlib,
pwlib/include/ptlib, and the binaries
pwlib.dll/pwlibd.dll/lib_pw_xxxx_r.so/lib_pw_xxxx_d.so
As always, the original source code is still available in
the CVS but
may not be actively maintained. See 3.10 for more
information
4.23 - How do I fix warnings about PVXMLSession and
OpalVXMLSession
not found compiling the opennivr/vxmltest/woomera programs?
The VXML code requires the header files for the expat XML
parser to be
installed on your system. If you are using Unix, then make
sure you
have the "expat-devel" package installed. If you
are using Windows,
then a recompiled version of expat and the required header
files can
be downloaded from http://ww
w.voxgratia.org/bin/expat_lib.zip.
For more information on Jim Clark's excellent XML toolkit,
see
http://www.jclar
k.com/xml/expat.html or
http://expat.sourceforge
.net
4.24 - The Windows configure process for PWLib or OpenH323
is finding
the wrong version of a library - how do I stop this?
The configure program for Windows will search all
directories looking
for installed versions of libraries such as as expat.lib
and
openldap.lib. If other programs have versions of these
libraries
installed, then it is likely that configure will pick the
wrong file.
This is particularly likely if you have two development
environments
installed, such as VS.net and MSVC.
To fix this, it is necessary to tell configure not to
search in
certain directories for files. This can be done by changing
the
configure command line in the project file, but there are
also several
predefined environment variables which, if set, will be
used by
configure to determine which directories to ignore. These
variables
are set to a list of directories seperated by semicolons
(";") :
PWLIB_CONFIGURE_EXCLUDE_DIRS ignore these directories
always
MSVC_PWLIB_CONFIGURE_EXCLUDE_DIRS ignore these directories
when
compiling using MSVC 6
VSNET_PWLIB_CONFIGURE_EXCLUDE_DIRS ignore these
directories when
compiling using VS.net 2003
4.25 - I used to be able to compile PWLib without any
problems, but
now I get warnings like this "Please remove
pwlibincludeptlibmsos
from the tool include path and from the pre-processor
options for this
project" - how do I fix this?
Prior to the Janus release of OpenH323, it was necessary to
include
the "platform specific" include directory into
the include paths for
the environment. This requirement was removed because it
was the
source of many problems for users.
The changes required to remove this dependency cause
problems if the
"platform specific" directory is retained, so
the code has been
altered to generate the above error if the include paths
are not
changed.
To remove the error, make sure that there are only three
directories
configured into the VS.net or MSVC 6 include path (as
described at
http://www.voxgratia.org/docs/pwlib_windows.html#dirs).
If you get this error while compiling a program, and you
have verified
that the environment includes paths are correct, then
ensure that the
Preprocessor options for the project do not contain the
"platform
specific" directory.
4.26 - How do I fix errors compiling
asn_grammar.y/asn_grammar.cxx?
On some platforms, compiling the ASNParser results in
errors like
this:
In file included from /pwlib/include/ptlib/contain.h:782,
from /pwlib/include/ptlib.h:146,
from asn_grammar.y:77:
/pwlib/include/ptlib/contain.inl: In constructor
`PAbstractList::PAbstractList()':
/pwlib/include/ptlib/contain.inl:428: warning: right-hand
operand
of comma has no effect
asn_grammar: In function `int yyparse()':
asn_grammar:5045: error: expected primary-expression
before
"__attribute__"
asn_grammar:5045: error: expected `;' before
"__attribute__"
asn_grammar:5040: warning: label `yyerrlab1' defined but
not used
These errors are probably due some flag differences in the
bison
pre-processor, but the solution is very simple. Simply
upgrade your
code to at least the last Janus release version (as of 1
Nov 2004,
this was Janus patch 4) because that version (and all
subsequent
versions) no longer require the ASN parser to be compiled.
See
4.21 for more information
4.27 - When I compile pwlib I get warnings like
"../common/getdate.y:
conflicts: 8 shift/reduce, 18 reduce/reduce" - is this
normal?
Yes, this is normal and does not indicate that there is a a
problem.
It can be safely ignored.
4.28 - When I compile pwlib I get a warning like "In
static member
function `static std::ostream&
PTrace::End(std::ostream&)': warning:
unused variable 'rb' - is this normal?
This warning has been left in to remind us of a potential
problem that
we need to fix some day. For now, it can be safely
ignored.
4.29 - How do I fix link errors about missing functions
when compiling
DLLs on Windows?
The short answer is that this problem is often a
side-effect of the
method used to maintain compatibility across various
versions of the
DLL libraries. The simplest way to solve this problem is to
delete the
files with the extension ".dtf" and then
completely rebuild the DLLs.
This should solve the problem.
Why does this work?
The long answer is that PWLib and OpenH323 attempt to
preserve the
ordinals used for DLL entry points across different
versions of the
libraries. To do this, the MergeSym program compares the
function
signatures in the DLLs to the entry points listed in the
.dtf files,
and makes sure that the final file ends up with compatible
ordinals.
The default .dtf files are created on a system with all
optional
features enabled, which means that if they are used on a
system with
less features, there are unresolved symbols left over.
4.30 - How do I link OpenH323, PWLib or OPAL applications
statically
in Windows?
To create a statically linked application in Windows, you
simply need
to link with the static versions of the libraries rather
than the
dynamic ones. A guide to the library names under Windows is
show
below. Note that you must not mix static and dynamic
versions of the
libraries in the same executable - this will cause very
strange and
hard to diagnose errors.
Library Static Debug Static Release Dynamic Debug Dynamic
Release
pwlib ptlibsd.lib & ptclibd.lib ptlibs.lib &
ptclibd.lib ptlibd.lib &
ptclib.lib
ptlibd.dll ptlib.lib & ptclib.lib
ptlib.dll
openh323 openh323sd.lib openh323d.lib openh323d.lib
openh323d.dll openh323.lib
openh323.dll
opal opensd.lib opals.lib opald.lib
opald.dll opal.lib
opal.dll
4.31 - How do I link OpenH323, PWLib or OPAL applications
statically
on Unix?
The standard makefiles allow static executables to be
created using
the following commands:
"make noshared" - creates a statically linked
executable with debug
information
"make optnoshared" - creates a statically linked
executable without
debug information
4.32 - How do I stop configure from finding the wrong
header files on
Windows?
The configure program on Windows will search all local hard
drives
looking for header files and libraries that indicate which
compile
time options can be enabled. Sometimes, configure will find
files that
it should not, usually because it is searching through the
wrong
directories. This can occur if packages such as Cygwin or
MSys are
installed on the host computer.
To prevent configure from attempting to use these header
files, it is
necessary to indicate which directories should be ignored
during the
scanning process.
To tell configure to ignore a directory, you must add the
path to be
ignored to the PWLIB_CONFIGURE_EXCLUDE_DIRS environment
variable.
In addition, the following environment specific environment
variables
can be used to customise the directories used for various
compile
environment environment. This is especially useful when
multiple
environments are installed on the same machine, (i.e.
having both MSVC
6 and VS.net 2003 installed)
MSVC 6 MSVC_PWLIB_CONFIGURE_EXCLUDE_DIRS
VS.net 2003 VSNET_PWLIB_CONFIGURE_EXCLUDE_DIRS
VS.net 2005 VSNET2005_PWLIB_CONFIGURE_EXCLUDE_DIRS
Note that technique can also be used to reduce the time
taken to
perform the configure scan by not scanning large directory
trees or
even entire drives.
Note that versions of configure prior to version 1.5
(released on 26
June 2006) do not support ignoring entire drives.
You can also specify directories to ignore on the configure
command
line using the --exclude-dir command line option, or you
can specify
the names of additional environment variables that contain
directories
using the --exclude-env option. See the custom build
information for
the project specific header file to edit the command line
to
configure.
4.33 - How do fix errors about missing
"MSVC80.DLL" or "MSVCR80.DLL"
file when debugging OPAL programs using Visual C++ 2005
Express
Edition?
This problem is caused by having dependent libraries, such
as OpenSLL
or Expat, that have incorrect references to the run-time
library. To
fix this problem, you will need to find correctly packaged
versions of
these libraries.
Some references to libraries that are known to work are
provided
below. Please email craigs postincrement.com if you
locate any
other sites that provide working library packages
OpenSSL Available for Shining Light Productions
ht
tp://www.slproweb.com/products/Win32OpenSSL.html
Expat Available from the SourceForge Expat project page
http://sourceforge.net/project/showfiles.php?group_id
=10127
4.34 - How do I fix gcc errors about
"PAtomicInteger" when compiling
OpenH323 or OPAL?
This error is usually indicates the presence of two
incompatible
versions of the pwlib headers, and that the openh323 build
process is
detecting the wrong set which is probably located in
in
/usr/local/include or /usr/include (check the configure
output to be
sure)
The easiest way to solve the problem is to set the
PWLIBDIR
environment to point to the correct version of PWLib.
Alternatively,
deinstall the incorrect version so that the auto-detection
find the
correct version.
4.35 - I cannot find the Console Components library files
(ptclib.lib
and ptclibd.lib) in recent builds of PWLib. Where are
they?
The Console Components library (ptclib.lib/ptclibd.lib) was
removed as
a separate library in late July 2006, and all of the source
files were
added to the base Console library. This simplifies the
management of
libraries under Windows, and brings the code in line with
the Unix
library.
____________________________________________________________
_____
5. CODECS
5.1 - Why is there no G.723.1/G.729 codec in OPAL or
OpenH323?
These codecs are covered by patents, and are not available
as Open
Source implementations.
5.2 - Can I use the ITU reference code for G.723.1 and
G.729?
Use of these codecs and the reference implementations still
requires
licenses from the patent holders. See the relevant ITU
specifications
for more information.
The ITU reference code for G.723.1, G.729 and several other
codecs can
be obtained from the ITU web site at
http://www.itu.int/publications/itu-t/list-t-soft.html
5.3 - Where can I get licensed G.723.1 and G.729
codec
implementations?
There are several companies that sell implementations of
these codecs
for various platforms. Be prepared to pay more than $10k
for each
codec implementation, plus $10 per copy sold/used.
Some companies that are known to have licensed codec
implementations
available are:
* VoiceAge (http://www.voiceage.com)
- G.729 and G.723.1 for
Windows and Linux
* Intel (http://ww
w.intel.com/software/products/ipp/) - A wide
range of codecs
5.4 - Can I use the Microsoft ACM G.723.1 codec in my
Windows
program?
It is not clear whether this is legal or not, but there is
reason to
believe that usage of the MS G.723.1 codec by programs
other than
those authorised by Microsoft is in violation of the DMCA.
We choose
not to use this codec for that reason - you make your own
choice.
5.5 - How do I use the H.263 video codec with NetMeeting?
As of 22 April 2004, the CVS head revision of OpenH323
contains the
AliceStreet code that implements RFC 2190 compliant H.263
as required
for compatibility with NetMeeting. As such, it is only
available for
users prepared to download and compile code from the CVS.
This code
will appear in future snapshots starting with PWLib 1.7.1
and OpenH323
1.14.1. See http://
www.voxgratia.org/docs/h263_codec.html for
more information.
The Janus release of OpenH323 and all versions up to
PWLib
1.6.6.1/OpenH323 1.13.5.1 contain a non-compliant
implementation of
H.263 that is not compatible with NetMeeting.
For developers who need to use H.263 with earlier versions
of
OpenH323, patches are available from Guilhem Tardy
at
http://www.salye
ns.com/?page=ffcodec
5.6 - How do I add my own audio or video codec to Opal or
OpenH323?
If you are using a current version of OPAL or OpenH323,
then you have
access to plugin codecs. See
http
://www.voxgratia.org/docs/codec_plugins.html for
more
information.
If you are using a version of OpenH323 prior to v1.14 or a
version of
OPAL prior to August 2006, then you will need to implement
your codec
as a embedded codec. Look at how other codecs such as GSM
or H.261 are
implemented for how to do this.
5.7 - What audio codecs are supported by OpenH323?
G.711 uLaw and ALaw
GSM 06.10
Microsoft-GSM
LPC-10
Speex
iLBC
G.726
G.723.1 (Windows and Linux: requires Quicknet card)
G.729 (Windows only: requires VoiceAge library
5.8 - What video codecs are supported by OpenH323?
H.261
H.263
CU-30
5.9 - Where can I get more information on plugin codecs?
See http
://www.voxgratia.org/docs/codec_plugins.html
5.10 - Why does a call using a compressed audio codec use
much more
bandwidth than expected?
The "headline" bitrate of a audio codec does not
include the overhead
added by RTP and UDP encapsulation. This overhead means
that a
compressed code like GSM (with an advertised bit rate of
13200
bits/second) actually consumes 29200 bits/second,
while an
uncompressed codec like G.711 (with an advertised bit rate
of 64kbps)
actually consumes 75kbps.
For a detailed explanation of how to calculate the actual
bit rate for
an audio codec, see http://www
.voxgratia.org/docs/codecbw.html
5.11 - What is the effect of changing the number of frames
per packet
for an audio codec?
Increasing the number of frames per packet will increase
latency but
decrease bandwidth. Decreasing the number of frames per
packet will
decrease latency but will increase bandwidth.
See http://www
.voxgratia.org/docs/codecbw.html for a more
detailed explanation of why this occurs.
5.12 - Why am I getting bad audio quality even though I am
using
G.711?
See 7.8
5.13 - Why am I getting bad audio when using the G.729
codec?
See 7.9
5.14 - How do I get the same codec in each direction when
making a
call?
This is an old problem, and one that is not easy to solve.
Firstly, it is perfectly legal to have asymmetric codecs in
H.323. So
what we are trying to do is outside the specification
Having said this, OpenH323 tries hard to get symmetric
codecs but it
is not always possible, especially if using slow start and
the other
end has a very different codec priority list.
The only guaranteed way is to have only one codec in the
list. If this
is not possible, then having the same codec priority, and
using
fastStart, also helps.
5.15 - Why are there so many Speex capabilities?
These Speex capabilities can be divided three different
groups:
1. Narrow and wide band codecs, using original OpenH323
identifier
2. Narrow and wide band codecs, using identifier specified
in Speex
draft RFC
3. Windows compatible narrow codec
There are two sets of Speex capabilities because the draft
Speex RFC
specified a format for the H.323 non-standard capability
string that
was incompatible with the format used by existing
OpenH323
implementations. Thus, the only way to preserve backwards
compatibilty
with old applications while still conforming to the new
standard was
to include both sets.
The original OpenH323 capability identifiers were removed
from OPAL in
August 2006.
For more information on the Speex Draft RFC, see
http://www.speex.org/drafts/draft-herlein-speex
-rtp-profile-02.tx
t
5.16 - Does OpenH323 support wide-band codecs?
Yes, via the plugin codec interface (see
http
://www.voxgratia.org/docs/codec_plugins.html).
Speex
wide-band has already been implemented via this interface
in the
current development code
5.17 - Can I use the H.263 video codec in my program?
The answer to this question is either no, yes, or maybe
depending on
who you are.
Firstly, I am not a lawyer. Any opinions expressed here are
mine alone
and should not be construed as an offer of legal advice.
Your mileage
may vary. Void where prohibited. Some settling of contents
may occur
during shipping.
Now that is out of the way, it is important to understand
that there
are actually two issues to be resolved: copyright and
patents.
There is no copyright issue as far as the FFMPEG codec
library is
concerned (the one that OpenH323 uses). The FFMpeg library
is LGPL,
and so can be used with the non-(L)GPL OpenH323, provided
we load it
at run-time (we do), and provided we make any changes
available as per
the terms of the LGPL (we do that too).
As expected, the patent issue is not as clear.
According to the site at http://www.mpegla.com it is
legal to
sell up to 50,000 MPEG4 decoder or encoder licenses in one
year
without royalties. See http://www.mpegl
a.com/m4v/m4vweb.ppt for
more information. MPEG4 is essentially H.263+, so you would
expect
that the H.263 code would just be a subset of the MPEG4
code.
Apparently this is not the case, so this licensing
arrangement
probably does not apply. Or at least, that's what some
people say -
others say different. The situation for you could well
depend on the
patent law in your part of the world.
In the end, there is no definitive answer saying that
ffmpeg is safe
to use, or not. You'll have to make up your own mind and
get your own
advice.
Feel free to contact the author if you have any additional
information
on this subject
____________________________________________________________
_____
6. DOCUMENTATION
6.1 - Where can I get a design document for OpenH323?
What design documents that do exist can be found
at
ht
tp://www.voxgratia.org/docs/openh323_design.html
6.2 - Where can I find the help file for OpenPhone?
There is no help file (yes - we know there is a link for
one). If you
write one, feel free to post it to the list
6.3 - Where can I find user manuals for the Openh323
programs?
In most cases, there are no manuals. Help on options can be
found by
running the program with the "--help" option.
6.4 - Is there a programming tutorial on OpenH323?
Vladimir Toncar has written a tutorial that can be viewed
at
http://toncar.cz/open
h323/tut/. It is available in English,
Brazlilian Portuguese and Spanish
6.5 - Is there documentation on audio codec plugins?
Yes - see http
://www.voxgratia.org/docs/codec_plugins.html
6.6 - Where can I get documentation on the API for PWLib
and OpenH323?
The header files for OpenH323 and PWLib contain API
documentation in
the Doc++ format. The recommended tool for converting the
header files
into documents (as of 17 May 2004) is Doxygen
(see
http://www.doxygen.org)
which is much faster and more accurate
than the original original Doc++ (see
http://docpp.sourceforge
.net).
To create the documentation for any particular version of
PWLib or
OpenH323, run the command "make docs" in the
"pwlib" or "openh323"
directories. A directory called "html" will be
created that contains
the documentation in HTML format. Doxygen can also be used
to create
documents in RTF and LaTex format, as well as the
compressed HTML
format (.CHM) for Windows.
Up to date versions of the the API documentation can be
found online
at http://www.voxgra
tia.org/docs/pwlib and
http://www.vo
xgratia.org/docs/openh323. Compressed archives of
the documentation for various releases can be found on the
Vox Gratia
download page at http://www.vo
xgratia.org/downloads.html
6.7 - What documentation is available for OpenH323?
A list of all documentation available for OpenH323 can be
found at
http://www.vo
xgratia.org/documents.html
A map (i.e. a list sorted by topic) of all documentation
available for
OpenH323 can be found at
http:
//www.voxgratia.org/docs/document_map.html
6.8 - Where can I find the specification documents for
H.323?
Copies of the specifications for H.323, H.225, H.245 and
most related
protocols can be found at
h
ttp://www.packetizer.com/iptel/h323/standards.html
6.9 - Is there a document on the configure.exe program used
for
configuring OpenH323 and PWLib on Windows?
Yes, see
http://www.voxgratia.org/docs/windows_configure.html
____________________________________________________________
_____
7. USING OPENH323
7.1 - When I make a call I get audio in only one direction.
What is
the problem?
You are probably behind a firewall and are trying to make a
call to
someone on the other side.. See your software documentation
for how to
solve this problem
7.2 - I am behind a firewall and cannot receive incoming
calls? Why
not?
Incoming calls require incoming connections on port 1720.
Make sure
that your firewall is passing incoming connections on that
port to
your client, and that your machine supports operation
behind a
firewall.
7.3 - I can establish a connection but no audio is
transferred. What
is wrong?
Make sure the two endpoints share a common codec.
7.4 - How do I call NetMeeting with an OpenH323 client?
NetMeeting can inter-operate with an Open Source OpenH323
client using
only a few audio and video codecs. These codecs are G.711
for audio
and H.261 or H.263 for video.
The G.711 audio codec is available as an Open Source
implementation
and should be available on all OpenH323 endpoints that have
audio
enabled. It requires a 64 kbps connection and is only
available in
NetMeeting if it is configured for LAN bandwidth.
The H.261 video codec is available as an Open Source
implementation
should be available on all OpenH323 endpoints that have
video enabled.
The H.263 video codec, which used less bandwidth and
provides better
quality, may be available if the optional support has been
enabled and
the required external library is available.
Several people have added new Open Source audio codecs to
NetMeeting
that use much lower bandwidth:
* GSM - it is possible to enable GSM codec under
Netmeeting, but the
previous instructions on how to do this are no longer
available.
If you have a reference for this, please email
craigs postincrement.com
* SpeexW - As of the Janus release, OpenH323 supports the
SpeexW
codec that can be added to NetMeeting. See
http://www.repub
lika.pl/roed/speexw/ for more information
NetMeeting contains proprietary codecs such as G.723.1 that
may be
available on some OpenH323 clients. For example, MyPhone
(see
http://myphone.sourcef
orge.net) contains code that allows use of
the MS-ACM G.723.1 codec on a Windows client. See 5.4 for
more
information
7.5 - I hear an echo when I speaking on a H.323 call - what
is wrong?
The echo is most likely caused by audio coming out the
speaker being
picked up by the microphone. Either move the speaker and
microphone
further apart, reduce the speaker volume, or (best of all)
use a
headset or handset.
7.6 - How can I test whether my client is working?
A recorded message can be heard by making a call
to
h323.voxgratia.org. This service supports the Speex, iLBC,
GSM, LPC-10
and G.711 codecs. A gatekeeper also available at
gk.voxgratia.org on
port 1719. See
http://www.voxgratia.org/docs/test_systems.html#endpoint
for more
information
7.7 - I'm sure I have found a problem with OpenH323 - how
do I report
it?
See 4.10
7.8 - Why am I getting bad audio even though I am using the
G.711
codec?
G.711 should sound as good as a normal phone call, because
it is the
same codec as used for ISDN and in telco switches. If you
are not
getting good audio, then you probably have one of the
following
problems:
* your network is heavily congested. Try increasing the
jitter
buffer size.
* your machine is too busy, or has a congested network
interface.
Close down other network-based, or sound-based
applications on the
same machine.
* G.711 may need as much as 75kps on a packet switched
network, not
64kbps as commonly thought. (See
http://www
.voxgratia.org/docs/codecbw.html for a more
detailed explanation of why this is so). Make sure that
you are
not using a low-speed link (such as dialup modem) that
has
sufficient bandwidth
* your sound card uses small buffers. If you are using
ohphone, try
using the "--sound-buffers" option to increase
the number of
buffers (the default value is 3)
7.9 - Why am I getting bad audio when using the G.729
codec?
G.729 uses a small packet size (10ms) which can cause
problems with
certain sound cards that use small sound buffers. If you
are
experiencing broken audio when using the G.729 codec,
increase the
number of sound buffers from the default value of 3. How
this is done
will depend on your client, but with ohphone it is done
using the
"--sound-buffers" option.
7.10 - When I start OpenGK/OpenMCU2/OpenIVR as a windows
service
process it won't start due to "error 1053" or
similar. How do I fix
this problem?
This error is caused by the service process being unable to
start for
some reason, usually because a required DLL cannot be
found. To fix
this problem, it is important to understand that all
service processes
are started with C:WINDOWSSYSTEM32 as the current
directory
regardless of the actual location of the executable, which
means that
all DLLs must be either in this directory or in some
directory
specified by the PATH environment variable.
The relocation of the current directory also affects the
loading of
PWLib plugins such as codecs, because the current directory
is always
included in the list of directories that are searched for
plugins. By
default, a program searches for plugins in the tree of
subdirectories
starting at the current directory when the program is
started. This
search involves looking at each DLL in turn, and checking
to see if it
is PWLib plugin.
Unfortunately, there was an error in older versions of
PWLib that
supported plugins which had the undesirable side effect of
actually
loading every DLL that was found, rather than loading only
DLLs that
are PWLib plugins. This bug meant that every DLL
in
C:WINDOWSSYSTEM32 (and there a lot of them) was loaded
when a
program was run as a Windows service. This usually resulted
in a
program crash with strange warnings about weird DLLs not
being found,
or at the very least causing the program to take an
unusually long
time to start up.
This problem was fixed in revision 1.16 of
pwlib/include/ptlib/pluginmgr.h which is included in all
Pandora
releases after Pandora RC2. At this time, this patch is not
included
in any Janus releases.
7.11 - How does OpenH323 support ENUM dialing?
OpenH323 automatically implements ENUM dialing (RFC 2916)
for
endpoints under the following conditions:
* the destination number contains only digits
* the destination address does not specify a gateway or
gatekeeper
* the endpoint is not configured to use a gatekeeper for
address
resolution
By default, the following domains will be used (in order)
to resolve a
DN using ENUM:
e164.voxgratia.net e164.org e164.arpa
This default path can be overridden by setting the
PWLIB_ENUM_PATH
environment variable to a list of domains separated by
semi-colons
(";") on Windows, or colons (":") on
Unix
7.12 - I am getting "Blocked" or other incorrect
results when using
STUN - how do I fix this?
OpenH323 and OPAL contain support for the STUN (Simple
Traversal of
UDP Through NAT) protocol to simplify making calls from
behind a NAT
firewall. This protocol uses a remote STUN server to assist
a client
in detecting what kind of NAT is being used.
Prior to 26 October 2004, the STUN client code in PWLib
used a timeout
of 500ms when waiting for results from the STUN server.
This timeout
was acceptable for most networks, but could result in
incorrect
results when used on busy or low speed connections, or on
hosts that
do not enjoy good connectivity to the Vox Gratia STUN
server
(stun.voxgratia.org).
The STUN client code now uses a timeout of 5000ms which
gives reliable
results, with the possible side effect of increasing setup
time for
hosts with busy or low speed connections.
To see determine what timeout is used by your code, find
the file
pwlib/src/ptclib/pstun.cxx and look for the following code
near line
449:
socket.SetReadTimeout(xxxx);
If xxxx is set to 500, then it is old code and the number
must be
changed to 5000. If this change is made, then recompile
PWLib as
required, and re-link any programs using OpenH323.
7.13 - What are the different firewall types reported by
STUN, and
what do they mean?
OpenH323 and PWLib support the STUN protocol (see RFC 3489)
for
detecting and interoperating with NATs and firewalls. The
STUN
protocol can detect several different NAT and firewall
configurations,
but only some of these configurations support VoIP
functions. The
detected NAT types are as follows:
NAT Type
NAT Port Restrictions Address
Type Supports VoIP Description
BlockedNat
Unknown Unknown Unknown No Host has no connectivity that
can be
determined.
PartialBlockedNat or UnknownNat
Uknown Unknown Unknown Unknown Unknown NAT type
OpenNat
No No Public Yes Host has a public IP address and has
unrestricted
access to the Internet with no firewall or NAT
restrictions
SymmetricFirewall
No Yes Public Yes
(see note 1) Same as OpenNAT, but some network entity
(probably a
firewall) is enforcing symmetric UDP connections. This
means that a
remote host can only send to an address/port on the source
host if,
and only if, it has previously received a connection from
the source
address/port.
ConeNat
Yes No Private Yes Each source address/port pair is mapped
to a unique
external address/port pair. Any external host can send to
the internal
host via the external address/port.
RestrictedNat
Yes Yes Private Yes
(see note 1) Same as Cone, except an external host can only
send to
the internal host if, and only if, the internal host has
previously
sent a packet to the external host address.
PortRestrictedNat
Yes Yes Private Yes
(see note 1) Same as RestrictedNat, except an external host
can only
send to the internal host if and only if, the internal host
has
previously sent to the external host address and port
SymmetricNat
Yes Yes Private No Each source address/port &
destination address/port
four-tuple is mapped to a unique external address/port
pair. Only the
destination address/port can send to the internal
address/port.
Note 1: this NAT type requires the endpoint behind the NAT
to send
audio/video before it will receive any audio/video. This
may not be
possible in call cases.
The STUN requires the use of an external STUN server.
Reitek S.p.a has
generously provided a STUN server for use by Vox Gratia
users which
can be found at stun.voxgratia.org.
7.14 - Why I am seeing messages like "RTP Packet from
SSRC=xxxxxxxx
ignored, expecting SSRC=yyyyyyyy" with audio only in
one direction?
The one-way audio and the warning message are caused by the
endpoint
changing the RTP SSRC identifier in the middle of a call.
While strictly speaking this is not illegal, it is a
strange thing for
the endpoint to do as this makes the endpoint look like a
hostile
endpoint is attempting to insert audio into the session.
Unfortunately, some endpoints do change the SSRC identifier
mid-call
and by default OpenH323 will detect the condition and
ignore the new
data. The warning message above will be displayed when this
condition
occurs.
If you need to interoperate with endpoints that change SSRC
mid-call,
you can disable the checking of SSRC identifiers by editing
the file
openh323/src/rtp.c. Look for a line of code in the
function
RTP_Session::RTP_Session as follows:
ignoreOtherSources = TRUE;
Change this to:
ignoreOtherSources = FALSE;
7.15 - How many simultaneous calls can OPAL/OpenH323
handle?
The short answer is that it depends on your application,
and the
amount of CPU you have.
A more precise answer is that without any modification, a
standard
OPAL/OpenH323 application on Linux that handles both
signaling and
media will hit the per-process file handle limit at about
80
simultaneous calls. By increasing the per-process file
handle limit to
16384 (using "ulimit") the maximum call density
is around 1300 calls.
If the calls always use H.245 tunneling, this will increase
to 110 and
1800. If the calls are signaling only, the limits are 330
and 5400.
The limits on Windows are around 1000 calls regardless of
the call
type.
An OpenH323 application can increase these limits further
by enabling
signaling aggregation. This feature is not yet available on
OPAL.
A detailed description of the problem and the aggregation
solution is
available in the whitepaper "Increasing the maximum
call density of
OpenH323 and OPAL" (see
http://www.voxgratia.org/docs/call%20thread%20h
andling%20model%20
1.0.pdf )
____________________________________________________________
_____
8. OPAL and OpenH323 applications
8.1 - What other projects use OpenH323?
The following Open Source projects are known to use OPAL or
OpenH323:
Ekiga (formerly known as GnomeMeeting) - http://www.ekiga.org
Client program for Windows, Linux, and other Unix
platforms based
on OPAL
CPhone - http://www.cphone.org
Client program for Linux and Windows platforms based on
OpenH323
GnuGK - http://www.gnugk.org
A gatekeeper for Unix and Windows based on OpenH323
MyPhone - http://myphone.sourcef
orge.net
Another client program based on OpenH323
Xmeeting - http://xmeeting.sour
ceforge.net/
Client program for MacOSX based on OpenH323
OCX for OpenH323 - http://www.geociti
es.com/rddamian/
An OCX control for OpenH323 that can be used in Visual
Basic and
MSIE. The page above seems to be out of date, but the
latest
sources can be found in the OpenH323 CVS in the
contrib/DCOM
directory.
YATE - http://yate.null.ro/pmwik
i/
Yate is Yet Another Telephone Engine and uses OpenH323 for
H.323
functionality
Bayonne - http://www.gnu.o
rg/software/bayonne/
Bayonne is a telephony communications server that uses
OpenH323 for
H.323 functionality
If you know of any other projects, please email
craigs postincrement.com
8.2 What commercial and closed-source software uses Opal
and OpenH323?
The following commercial software is known to use OPAL or
OpenH323:
PacPhone - http://www.pacphone.com
A softphone based on OpenH323 that supports encryption
and
authentication
Gridborg HMP - http://www.uniqall.com
A software based media controller based on OPAL that
supports voice
and fax
Internet switchboard - http://www.quicknet.net
ISB is a softphone based on OpenH323 that supports
Quicknet's range
of audio compression cards
Marratech Manager - http://www.maratech.com
A cross-platform video conferencing solution from
Marratech AB in
Sweden using OpenH323.
If you know of any other products, please email
craigs postincrement.com
8.3 - What is the status of the OpenMCU program?
OpenMCU was originally created in May 2000 by Craig
Southeren as a
experiment to investigate some ideas about how an audio MCU
might
work. A description of the original motivations can be
found at
h
ttp://www.southeren.com/blog/archives/000050.html.
Over the next two years the code was modified by Derek
Smithies and
Roger Hardiman to include video capabilities and to add
extra
functions such as support for multiple rooms. The final
result of this
effort was OpenMCU v1.7.1 which supported both video and
audio, but
was unstable and difficult to understand. Guilhem Tardy has
also
released some notes on how to add H.263 support to OpenMCU
at
http://www.salyens.co
m/ffcodec/
OpenMCU version 2 was started in March 2004 with support
from Citron
Networks with intent of fixing the known problems with
version 1. The
code was almost completely rewritten to be more modular,
and the
stability issues were addressed. This work ended around
August 2004
with a version that only supported audio.
A new project was started in March 2006 with the support of
Stonevoice
to restore video functionality to OpenMCU. In June 2006,
OpenMCU 2.2.0
was released with full support for both audio and video
including the
H.261 and H.263 codecs.
8.4 - How do I use OpenH323 with Asterisk?
There are three different modules that interface Asterisk
and
OpenH323:
* asterisk-oh323 by Michael Manousos -
http://www.inaccessnetworks.com/projects/asterisk-oh323
a>
This channel driver module is compiled with OpenH323 and
PWLib,
and uses the low level audio interface of OpenH323. This
driver
uses the RTP stack and codecs within OpenH323.
* channel_h323 by Jeremy McNamara - included as part of
the standard
Asterisk source package
This channel driver module is compiled with OpenH323 and
PWLib,
and uses the external RTP interface of OpenH323. This
driver uses
the RTP stack and codecs from Asterisk
* chan_woomera with Woomera by Anthony Minessale -
www.pbxfreeware.org/chan_woomera
This module uses a simple Asterisk channel driver
called
chan_woomera that does not contain any H.323 code. This
driver
commuicates with a seperate process called Woomera that
contains
OpenH323.
____________________________________________________________
_____
9. Programming
9.1 How do I create a program that uses OpenH323 for call
control, but
uses an external RTP device?
This is quite easy to do, and is explained in more detail
at
http:
//www.voxgratia.org/docs/external_rtp.html
9.2 - How do get a list of the codecs supported by
OpenH323?
The static function
H323PluginCodecManager::GetMediaFormats will
return a list of all of the codecs that are supported by
the current
set of plugins and statically linked code without
requiring any
additional hardware. By default, this will include all of
the audio
codecs that can be converted to/from PCM-16. It will also
include any
video media formats that are supported by the stack. This
will always
include H.261 (if video is compiled into the stack) and
H.263 (if
support has been compiled and all necessary run-time
loadable
libraries are available).
The virtual function
OpalLineInterfaceDevice::GetMediaFormats can be
called on any instance of OpalLineInterfaceDevice or
descendant to
obtain the media formats supported by a specific hardware
device.
See http
://www.voxgratia.org/docs/codec_plugins.html for more
information on the plugin codec system in OpenH323,
including general
information on codecs
9.3 - When I enable PMEMORY_CHECK, I see all sorts of
memory leaks
reported. How do I fix these?
There is a define called PMEMORY_CHECK that enabled all
sorts of code
in PWLib to check memory blocks allocated by the code. But
this is
turned off by default (even in debug mode) because the code
it uses is
pretty stupid. Not only does it slow down the entire stack
by a
significant amount, but it reports all sorts things as
memory leaks
when they really aren't. We got tired of people going into
a panic
when they saw the words "memory leak" and then
having to explain why
this was not a problem, so we just disabled it.
First of all, lets be clear what a memory leak is. The
jargon file
(see http://www.catb.org/~
esr/jargon) defines a memory leak as:
An error in a program's dynamic-store allocation logic
that causes
it to fail to reclaim discarded memory, leading to
eventual
collapse due to memory exhaustion.
By this definition (which I agree with), a memory leak it
is not just
a memory block that is never freed, but it a problem with
memory
allocation that leads to memory exhaustion. This is an
important
distinction, because there are lots of places in PWLib,
OpenH323 and
OPAL where memory is allocated, but never freed, and these
do not (and
never will) lead to memory exhaustion because they are only
allocated
once and the reused for the lifetime of the program. The
PFactory code
is a good example of this.
It is these memory blocks that cause PMEMORY_CHECK to be a
pain. It
reports every one of these memory allocations as a memory
leak even
though they are not causing any problems. So why don't we
just ensure
that these memory blocks are cleaned up? Two reasons -
firstly we
don't have time to spend on issues that are not real
problems; and
secondly, it can be difficult to determine exactly when
some of these
memory blocks should actually be freed in order to avoid
causing
problems during shutdown. So we just choose to avoid the
issue.
____________________________________________________________
_____
10. OPAL
10.1 - What is OPAL?
OPAL is the "next generation" of OpenH323 that
has a new architecture.
Not only does it support H.323 and SIP, but new VoIP
protocols or
devices can be added very easily. It is being actively
developed and
is used by several projects such as Ekiga (http://www.ekiga.org)
BTW: OPAL is an acronym for Open Phone Abstraction Library,
but that
is not really important
10.2 - Where can I download OPAL?
OPAL sources in both tar.gz and ZIP formats can be
downloaded from the
Vox Gratia web site at http://www.vo
xgratia.org/downloads.html
OPAL can also be extracted from the OpenH323 CVS using
"opal" module
name
10.3 - How do I compile OPAL?
Compiling OPAL is very similar to compiling OpenH323.
Detailed
instructions on compiling OPAL under Windows can be found
at
http:
//www.voxgratia.org/docs/opal_windows.html
10.4 - How do I use SimpleOPAL to make a call?
Most of the command line options for SimpleOPAL are fairly
obvious,
but some examples are always useful:
The following command makes a H.323 call to
h323.voxratia.org without
using a gatekeeper.
simpleopal -n h323:h323.voxgratia.org
The following command makes a SIP call to a remote endpoint
without
using a registrar.
simpleopal -n sip:192.168.1.247
To listen for incoming calls, use the "-l" option
instead of the
destination address.
For information on making calls to telephone numbers with
SimpleOPAL,
see 10.7 below
10.5 - Is OpenH323 now obsolete or deprecated now that
OPAL is
released?
For the foreseeable future, both OpenH323 and OPAL will
continue to be
maintained and updated. When we consider that OPAL has the
same level
of maturity and H.323 functionality as OpenH323, we will
move OpenH323
into a maintenance-only mode. We're not sure when that will
happen.
10.6 - Where can I find documentation on OPAL?
A reference document for the OPAL API can be extracted from
the OPAL
header files using the command "make docs". This
command requires the
Doxygen program. A copy of this documentation can be
found at
http://www.voxgrat
ia.org/docs/opal .
There is also a nice description of the OPAL architecture
in a thesis
written by Hadeel H. Taha titled "Architecture for a
SIP-Based
Conferencing Server". This document can be found
at
http://swt198.swt.fh-mannheim.de/gossip/download
/Thesis_Taha.pdf
and there is also a copy at
ht
tp://www.voxgratia.org/docs/opal/Thesis_Taha.pdf
10.7 How do I use OPAL to make a call to a telephone
number?
To make calls to a telephone number, you will need to use a
service
that provides a gateway between SIP or H.323 calls and the
public
switched telephone network. There are several such networks
- some of
these are free and some charge for calls. Instructions on
using
several such networks can be found below. Please email
craigs postincrement.com if you have information on any
other
calling services that are compatible with OPAL or
OpenH323
Free World Dialup - http://fwd.pulver.com
This free service allows calls to a wide variety of SIP
networks as
well as US 1800 and 1866 numbers. The following command
line can be
used to make a test call to any FWD destination
simpleopal -H -u userid -p password --register-sip
fwd.pulver.com
sip:number fwd.pulver.com
Broadvoice - http://www.broadvoice.com
a>
This subscription service offers both incoming and outgoing
calls via
SIP. The following command can be used to make outgoing
calls:
simpleopal -H --register-sip proxy.broadvoice.com
--sip-proxy proxy.broadvoice.com
--sip-domain sip.broadvoice.com
-D *LBC* -D *Speex*
-u userid -p password
sip:number sip.broadvoice.com
Note that is necessary to disable the Speex and iLBC codecs
when using
Broadvoice as the service will timeout or refuse calls
containing
these codecs.
Gizmoproject - http://www.gizmoproject.c
om
This service offers free outgoing calls to many countries
and incoming
calls from landlines for a fee. The following command line
can be used
to listen any destination
simplopal -H -u userid --password password
--register-sip
proxy01.sipphone.com sip:number proxy01.sipphone.com
International (non-US) destination can be called by
prefixing the
number with the "+" character, such as
"sip:+61243654666 proxy01.sipphone.com"
____________________________________________________________
_____
Copyright (C) 2004-2005 by Post Increment, All Right
Reserved
http://www.postincrement
.com
All trademarks and copyrights on this page are owned by
their respective owners
------------------------------------------------------------
------------
Check the FAQ before asking! - http://www.
openh323.org/~openh323/fom.cgi
The OpenH323 Project mailing list, using Mailman. To
unsubscribe or
change your subscription options, goto
htt
p://www.openh323.org/mailman/listinfo/openh323
Maintained by Quicknet Technologies, Inc - http://www.quicknet.net
------------------------------------------------------------
------------
|