Video-conference-system
所属分类:IP电话/视频会议
开发工具:Delphi
文件大小:4942KB
下载次数:33
上传日期:2012-08-21 15:37:31
上 传 者:
findhhq
说明: 遵循H323规范的视频会议系统源码,使用delphi开发,
(Follow the the H323 specification of video conferencing system source code, use delphi development)
文件列表:
遵循h323的视频会议系统代码 (0, 2005-06-20)
遵循h323的视频会议系统代码\callgen323_1.2.5 (0, 2002-12-20)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323 (0, 2002-12-20)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\.cvsignore (99, 2002-10-08)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\callgen323.dsp (5910, 2002-10-09)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\callgen323.dsw (816, 2002-02-11)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\CVS (0, 2002-12-20)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\CVS\Entries (520, 2002-12-12)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\CVS\Repository (20, 2002-12-12)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\CVS\Root (50, 2002-12-12)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\CVS\Tag (9, 2002-12-12)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\main.cxx (25759, 2002-12-11)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\main.h (5953, 2002-11-16)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\Makefile (208, 2002-03-26)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\precompile.cpp (25, 2002-01-24)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\precompile.h (182, 2002-01-24)
遵循h323的视频会议系统代码\callgen323_1.2.5\callgen323\version.h (1234, 2002-12-12)
遵循h323的视频会议系统代码\ohphone_1.3.4 (0, 2002-12-20)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone (0, 2002-12-20)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\.cvsignore (91, 2001-10-29)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\check_listen.awk (831, 2000-11-01)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\CVS (0, 2002-12-20)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\CVS\Entries (1032, 2002-12-12)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\CVS\Repository (17, 2002-12-12)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\CVS\Root (50, 2002-12-12)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\CVS\Tag (9, 2002-12-12)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\main.cxx (128180, 2002-11-13)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\main.h (20159, 2002-10-31)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\Makefile (6421, 2002-11-26)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\mpl-1.0.htm (20583, 2001-08-17)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\ohphone.1 (14229, 2000-08-21)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\OhPhone.dsp (5892, 2002-10-09)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\ohphone.dsw (537, 2000-05-11)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\precompile.cxx (966, 2000-05-02)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\regtest (2214, 2000-11-01)
遵循h323的视频会议系统代码\ohphone_1.3.4\ohphone\sdlvid.cxx (17080, 2002-12-04)
... ...
Portable Windows Libary
=======================
Contents
--------
1. Introduction
2. Apologies
3. CVS Access
4. Building PWLib
5. Using PWLib
6. IPv6 issues
7. Platform Specific Issues
8. Conclusion
9. Licensing
================================================================================
1. Introduction
---------------
PWLib is a moderately large class library that has its genesis many years ago as
a method to product applications to run on both Microsoft Windows and Unix
X-Windows systems. It also was to have a Macintosh port as well but this never
eventuated.
Since then the system has grown to having quite good application to areas other
than mere Windows GUI portability. Classes for I/O portability, multi-threading
portability, aid in producing unix daemons and NT services portably and all
sorts of internet protocols were added over the years.
All this over and above basic "container" classes such as arrays, linear lists,
sorted lists (RB Tree) and dictionaries (hash tables) which were all created
before STL became the answer to all our prayers. Unfortunately, due to intertia
and the GNU C++ inadequate support of templates, this library will probably not
be ported to STL in the near future.
The library was used extensively for all our in-house products. Then we decided
to support the open H323 project by throwing in some of the code written for
one of our products. Thus, required PWLib so it got thrown into the open source
world as well.
================================================================================
2. Apologies (not)
------------------
As you start using the library, the inevitable question "why did they do it that
way?" will come up. The more experienced out there will know that there are
several reasons for the way things are:
* Carefully considered design,
* Workarounds for portability and compiler subtleties,
* History, it may be too hard to change an early design decision,
* Complete arbitrariness, the absence of any compelling reason.
So, when you ask the next question "why didn't you do it this way?" The answer
will be one of the above. The last one being a synonym for "we didn't think of
that!"
The bottom line is, use the library as is or change it as you require. You can
even send in suggestions for improvements (or merely changes) and we may (or may
not) include them in the base line code. Just do not send us any mail starting
with the words "Why did you..." as the answer is quite likely to be "Because!"
================================================================================
3. CVS Access
-------------
There is a public CVS archive available at cvs.openh323.org. Note that there are
still some parts of PWLib that are not available, so make sure you use the
modules provided for check out and do not just try and check out "pwlib" on it's
own. If you do all you will get is this file.
The modules available are:
ptlib_unix
pwlib_xlib (does not work, anyone is welcome to fix!)
ptlib_win32
pwlib_win32
================================================================================
4. Building PWLib
-----------------
This library is multi-platform, however there are only two major build systems
that are used. The Microsoft DevStudio environment for Windows and the GNU make
system for all of the various unix systems.
4.1. For Windows
----------------
1. Note you will need the bison and flex tools to compile some parts of the
system. You can get a copy from http://www.openh323.org/bin/flexbison.zip,
follow the instructions included in that package and put the executables
somewhere in your path.
2. Start MSVC (v5, v6 or v7 (.NET)). If you have another compiler you are on
your own! Add these folders to the Include Files path as follows:
In VisualStudio v5/6 go into the Tools menu, Options item, Directories tab.
In VisualStudio v7, go into the Tools menu, Options item. In the Options
dialog, open the Projects folder, VC++ Directories item. In the 'Show
Directories for:' list, select 'Include files'.
C:\PWLib\Include\PwLib\MSWIN (if you have the full PWLIB version)
C:\PWLib\Include\PtLib\MSOS
C:\PWLib\Include
Add the following to the Lib Files path and the Executable Files path:
C:\PWLib\Lib
The Lib folder is created as parts of PWLib are built. Also add this
directory to your PATH environment variable (so PWRC, MergeSym and
ASNParser tools can be found).
2a. If you have OpenSSL installed and compiled on your system then you
can define the following environment variables to get SSL support:
OPENSSLFLAG=1
OPENSSLDIR=c:\somewhere\openssl
OPENSSLLIBS=ssleay32.lib libeay32.lib
If you have NOT included these variables then you will get a warning
during the build. YOu can safely ignore this warning.
2b. If you have EXPAT installed and compiled on your system then you
can define the following environment variables to get XML support:
EXPATFLAG=1
EXPATDIR=c:\somewhere\expat
EXPATLIBS=expat.lib
If you have NOT included these variables then you will get a warning
during the build. YOu can safely ignore this warning.
3. In VisualStudio v5/6 open the pwlib.dsw file in the pwlib top directory.
If you have the minimum library it will come up with several requests to
find .dsp files, just cancel past these.
In VisualStudio v7 open the pwlib.sln file in the pwlib top directory.
4. In VisualStudio v5/6 use the Batch Build command and build the "ASNParser
Win32 Release", "pwtest Win32 Release" and "pwtest Win32 Debug" targets.
Make sure all other targets are not checked.
In VisualStudio v7 use the Batch Build command. It seems as though the
batch build does not build dependent parts unless they're checked in the
Build column. For a test build, be sure all Projects are checked except
ASNParser-debug, MergeSym-debug, PacketVXD-release, PWRC-debug, and both
XMLRPC.
5. That's it, now you're on your own!
These are the project relationships:
project dependencies output
------- ------------ ------
Console (none) ptlibs.lib
GUI (none) pwlibs.lib
MergeSym ptlibs.lib mergesym.exe
PTLib ptlibs.lib, mergesym.exe ptlib.dll & lib
PWLib pwlibs.lib, mergesysm.exe, ptlib.lib pwlib.dll & lib
Console Components (none) ptclib.lib
GUI Components (none) pwclib.lib
ASN Parser ptlib.lib asnparser.exe
PWRC ptlib.lib (flex.exe) pwrc.exe
PWTest ptlib,pwlib,ptclib,pwclib.lib,pwrc.exe pwtest.exe
MSDevWizard (none) PWLibWizard.awx
XMLRPC ptlibs.lib, ptclib.lib xmlrpc.exe
PacketVXD (none) epacket.vxd
Debug versions append 'd' to filename, ie: ptlibsd.lib.
MSDevWizard will not build in VisualStudio v7 and so is not included as a project.
--------------------------------------------------------------------------------
4.2. For unix.
--------------
1. If you have not put pwlib it into your home directory (~/pwlib) then
you will have to defined the environment variable PWLIBDIR to point to
the correct directory.
Also make sure you have added the $PWLIBDIR/lib directory to your
LD_LIBRARY_PATH environment variable if you intend to use shared
libraries (the default).
2. Build the debug and release versions of the PWLib library as follows:
cd ~/pwlib
make both
This may take some time. Note, you will need bison and flex for this to
compile, most unix systems have these. WARNING: there is a bug in most
of the bison.simple files. See below for details.
PWLib requires GNU Make. If GNU Make (gmake) is not your default make
program (eg FreeBSD users), you will need to install GNU Make first
and then use
cd ~/pwlib
gmake both
If you are getting huge numbers of errors during the compile, then it
is likely your platform is not supported, or you have incorrectly set
the OSTYPE and MACHTYPE variables.
3. That's all there is to it, you are now on your own!
Bison problem under Unix
The bison.simple file on many releases will not compile with the options used
by the PWLib getdate.y grammar. The options are required to make the date
parser thread safe so it is necessary to edit the bison.simple file to fix the
problem.
The file is usually at /usr/lib/bison.simple but in the tradition of unix
could actually be anywhere. We leave it up to you to find it.
The code:
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
int yyparse (void);
#endif
should be changed to
/* Prevent warning if -Wstrict-prototypes. */
#ifdef __GNUC__
#ifndef YYPARSE_PARAM
int yyparse (void);
#endif
#endif
To prevent the incorrect function prototype from being defined. The getdate.y
should then produce a getdate.tab.c file that will actually compile.
================================================================================
5. Using PWLib
--------------
What documentation there is consists of this document and all of the header
files. It was intended that a post processer go through the header files and
produces HTML help files, but this never got completed.
5.1. Tutorial
-------------
Detailed tutorials will almost certainly not be forthcoming. However, at least
giving you an indication on how to start an application would be usefull, so
here is the infamous "Hello world!" program.
// hello.cxx
#include
class Hello : public PProcess
{
PCLASSINFO(Hello, PProcess)
public:
void Main();
};
PCREATE_PROCESS(Hello)
void Hello::Main()
{
cout << "Hello world!\n";
}
// End of hello.cxx
The CREATE_PROCESS macro actually defines the main() function and creates an
instance of Hello. This assures that everything is initialised in the correct
order. C++ does initialisation of global statics badly (and destruction is even
worse), so try to put everything into your PProcess descedent rather than
globals.
A GUI application is very similar but is descended off PApplication rather than
PProcess, and would create a window as a descendent off the PMainWindow class.
The following is a simple Makefile for Unix platforms for the hello world
program.
# Simple makefile for PTLib
PROG = hello
SOURCES = hello.cxx
ifndef PWLIBDIR
PWLIBDIR=$(HOME)/pwlib
endif
include $(PWLIBDIR)/make/ptlib.mak
# End of Makefile
--------------------------------------------------------------------------------
5.2. PWlib Classes
------------------
The classes in PWLib fall into the following broad categories
Containers
I/O
Threads & Processes
GUI
5.2.1. Containers
While there are a number of container classes you wourld rarely actually descend
off them, you would use macros that declare type safe descendents. These are
simply templates instantiations when using a compiler that supports templates
in a simple manner (GNU C++ does not qualify in our opinion).
5.2.2. I/O
There are many classes descendend from a basic primitive call a PChannel, which
represents an entity for doing I/O. There are classes for files, serial ports,
various types of socket and pipes to sub-processes.
5.2.3. Threads & Processes
These classes support lightweight threading and functionality to do with the
process as a whole (for example argument parsing). The threading will be
pre-emptive on platforms that support it (Win32, platforms with pthreads eg
Linux and FreeBSD) and cooperative on those that don't.
5.2.4. GUI
There are a very large number of classes to support a GUI interface. This is not
very complete at this time. The Win32 implementation is quite usable, though it
doesn't include the latest and greatest out of Redmond. The pure xlib
implementation has quite a lot implemented but is by no means complete. A motif
implementation is in the works but has not progressed very far.
================================================================================
6. IPv6 support in pwlib
------------------------
The IPv6 support in pwlib is still experimental. You have to get the latest
CVS version to compile it (does work since 7th November 2002). Pwlib can be
compiled with or without the IPv6 support.
When compiled with the IPv6 support, applications using only IPv4 are still
fully backward compatible. Pwlib is able to manage simultaneously IPv4 and
IPv6 connections.
--------------------------------------------------------------------------------
6.1. Windows platforms
----------------------
According to microsoft, IPv6 is not supported under 9x, experimental on Win2000,
supported on XP.
You must use a compiler with IPv6 aware includes and libraries:
- VC6 must be patched to support RFC 2553 structure. (See 7.1 and 7.2 for patch)
- .Net should be ok (to be confirmed)
The port as been performed with VC6 patched on a win2000 platform.
For more informations about IPv6 support:
Microsoft IPv6 support:
http://research.microsoft.com/msripv6/
IPv6 for win2000:
http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp
IPv6 for XP:
http://www.microsoft.com/windowsxp/pro/techinfo/administration/ipv6/default.asp
6.1.1. Windows platforms: Win2000
---------------------------------
Go to Microsoft win2000 IPv6 tech preview web page.
http://msdn.microsoft.com/downloads/sdks/platform/tpipv6.asp
Download the 'tpipv6-001205.exe' file and read carrefully the faq.
http://msdn.microsoft.com/downloads/sdks/platform/tpipv6/faq.asp
This program is designed for win2000 English Service pack 1.
To install it on newer Service pack, you have to modify some files.
Again, read the Faq.
This install the IPv6 driver and the IPv6 includes.
6.1.2. Windows platforms: XP
----------------------------
Read the IPv6 faq for windows XP
http://www.microsoft.com/windowsxp/pro/techinfo/administration/ipv6/default.asp
The 'ipv6 install' command installs only the IPv6 drivers.
You need to install additionnals IPv6 includes for VC6.
.NET should be ready. (to be confirmed ....)
6.1.3. Compiling
----------------
To compile pwlib and openh323 with the IPv6 support you have to set an
environment variable:
IPV6FLAG=1
Set it using: [Start]/[Configuration pannel]/[System]/[Environment]
Add the IPv6 SDK include path in your Visual C++ 6 environment:
[Tools]/[Options]/[Directories]/[Include files]
--------------------------------------------------------------------------------
6.2. Linux platforms
--------------------
Recent Linux distributions support IPv6.
2.4 kernels are IPv6 aware.
Linux IPv6 Faq:
http://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/
6.2.1. Enabling IPv6 support
----------------------------
IPv6 can be compiled statically in the kernel or compiled as a module.
To load the IPv6 module, as 'root'
#modprobe ipv6
6.2.2. Compiling
--------------
Check that IPv6 is really on
#ls /proc/net/if_inet6
If this file exists, then IPv6 support is compiled in pwlib and openh323.
--------------------------------------------------------------------------------
6.3. Testing
------------
The test application sources can be found in the directory: openh323/samples/simple
Once compiled the binaries are in simple/debug, release, obj_linux_x86_d, or
obj_linux_x86_r.
Under windows, the test application is simple.exe
Under linux, the test application is simh323
IPv6 support can be tested on only one machine. Just open two shell/command windows.
6.3.1. IPv6 Address and port notation
-------------------------------------
IPv4 address and port are written in dot notation: xx.xx.xx.xx:4000
IPv6 global address are written in semi-colon notation: [xx:xx:xx:xx::xx]:4000
IPv6 scoped address ad a field for the scope: [xx:xx:xx:xx::xx%scope]:4000
Exemples:
Global address
[3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5]:4000
[3ffe:0b80:0002:f9c1::500b:0ea5]:4000
Scoped address
[fe80::232:56ff:fe95:315%lnc0]:4000
Scoped address are not supported yet.
6.3.2. Tests configuration
--------------------------
Tests 1,2,3 run on a single dual stack machine.
IPv4 Address: 127.0.0.1, 10.0.0.6
IPv6 Address: ::1, 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5
Tests 4,5,6 run on two dual stack machine.
PC1
IPv4 Address: 10.0.0.6
IPv6 Address: ::1, 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5
PC2
IPv4 Address: 10.0.0.8
IPv6 Address: ::1, 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6
6.3.3. Test 1: IPv4 <--> IPv4 local call
----------------------------------------
This test checks the backward compatibility with IPv4
In first shell/command window, listen on 127.0.0.1, wait for a call.
simple.exe -tttt -n -i 127.0.0.1 -l -a
In second shell/command window, listen on 10.0.0.6, call 127.0.0.1
simple.exe -tttt -n -i 10.0.0.6 -n 127.0.0.1
6.3.4. Test 2: IPv6 <--> IPv6 local call
----------------------------------------
This test checks the IPv6 support
In first shell/command window, listen on ::1, wait for a call.
simple.exe -tttt -n -i ::1 -l -a
In second shell/command window, listen on IPv6 address, call ::1
simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 -n [::1]
6.3.5. Test 3: IPv4 <--> IPv6 local call
----------------------------------------
This test checks that simultaneous IPv4 and IPv6 calls are supported.
In first shell/command window, listen on 127.0.0.1, wait for a call.
simple.exe -tttt -n -i 127.0.0.1 -l -a
In second shell/command window, listen on IPv6 address, call 127.0.0.1
simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 -n 127.0.0.1
6.3.6. Test 4: IPv4 <--> IPv4 call between two hosts
----------------------------------------------------
This test checks the backward compatibility with IPv4
First host, listen on 10.0.0.6, wait for a call.
simple.exe -tttt -n -i 127.0.0.1 -l -a
Second host, listen on 10.0.0.8, call 10.0.0.6
simple.exe -tttt -n -i 10.0.0.8 -n 10.0.0.6
6.3.7. Test 5: IPv6 <--> IPv6 call between two hosts
----------------------------------------------------
This test checks the IPv6 support
First host, listen on 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5, wait for a call.
simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5 -l -a
Second host, listen on 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6, call 3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5
simple.exe -tttt -n -i 3ffe:0b80:0002:f9c1:0000:0000:500b:0eb6 -n [3ffe:0b80:0002:f9c1:0000:0000:500b:0ea5]
6.3.8. Test 6: IP ... ...
近期下载者:
相关文件:
收藏者: