Fixed VPB plug in build under linux
[opal/cbnco.git] / opal.dxy
blob5987ce1ec2b4303e6fc3dbf04d8b38c9aeaf28e7
1 /*! \mainpage  OPAL  -  Open Phone Abstraction Library
2  
5 \section Introduction Open Phone Abstraction Library
7         This is a Open Source class library for the development of
8         applications that wish to use the SIP and H.323 protocols for
9         multi-media communications over packet based networks.
14 Last updated 10 May, 2005
16 Copyright (C) 1999-2003 Equivalence Pty Ltd, All right reserved 
18 Portions Copyright (C) 2004 Post Increment, All Rights Reserved
21 \section arch Architecture
23 The fundamental object in the ownership hierarchy is the OpalManager
24 class. 
26 There are endpoint classes, which control the specifics for that particular
27 protocol. Thus, SIPEndPoint controls SIP specific things, and H323EndPoint
28 controls h.323 specific things. An application would typically create one
29 instance of a descendant of either (or both) endpoint classes.
31 \subsection Flow of the RTP data.  
32 The flow of RTP data is from the "source"-->patch-->"sink". The patch is a
33 thread which reads from the "source", and writes to the "sink". For example,
34 the source OpalMediaStream reads UDP data in, which the patch then writes to a
35 sink media stream (e.g. the attached sound card).
38 \subsection Key Opal clases 
39 There are four key classes in opal. - OpalManager, OpalEndPoint,
40 OpalConnection, and OpalCall.
42 The OpalManager maintains state on the entire application. 
44 There is an EndPoint (descended of OpalEndPoint) for each protocol the
45 application supports. Thus, you have (for example) the classes
46 H323EndPoint, SIPEndPoint, OpalLIDEndPoint, OpalPCSSEndPoint
48 The Connection class does the state handling for each call of that
49 protocol.  Thus, if there are four concurrent H.323 calls being
50 handled by the application, there will be four instances of the
51 H323Connection class.
53 The OpalCall provides the glue between two Connection instances. Thus,
54 if use a OpalCall class to glue a H323Connection and PCSSConnection,
55 H.323 calls are connected to the PC Sound System, and the application
56 behaves like ohphone.  Conversely, if OpalCall is used to glue a
57 H323Connection and SIP connection together, you have a H.323 - SIP
58 gateway.
60 \section opal Opal Classes 
61 Classes with the word "Opal" in their name are independent of
62 protocol. Thus, the OpalEndPoint class will be used for the H.323 and
63 SIP voip protocols. It is expected that the implementation of any VOIP
64 protocol requires the user to subclass from this list.
68 The key architectural classes are::
69 \li OpalCall 
70 \li OpalConnection 
71 \li OpalEndPoint 
72 \li OpalManager 
73 \li OpalMediaFormat
74 \li OpalMediaPatch 
78 The remaining Opal classes are listed below.
80 \li OpalAudioFormat 
81 \li OpalAudioMediaStream 
82 \li OpalFileMediaStream 
83 \li OpalFramedTranscoder 
84 \li Opal_G711_ALaw_PCM 
85 \li Opal_G711_uLaw_PCM 
86 \li Opal_G726_16_PCM 
87 \li Opal_G726_24_PCM 
88 \li Opal_G726_32_PCM 
89 \li Opal_G726_40_PCM 
90 \li Opal_G726_Transcoder 
91 \li Opal_G729_PCM 
92 \li OpalGloballyUniqueID 
93 \li Opal_GSM0610 
94 \li Opal_GSM0610_PCM 
95 \li Opal_H261_YUV420P 
96 \li Opal_iLBC_13k3_PCM 
97 \li Opal_iLBC_15k2_PCM 
98 \li Opal_iLBC_Encoder 
99 \li OpalInternalTransport
100 \li OpalIVRConnection 
101 \li OpalIVREndPoint 
102 \li OpalIVRMediaStream 
103 \li OpalIxJDevice
104 \li OpalLIDEndPoint
105 \li OpalLIDRegistration
106 \li OpalLine
107 \li Opal_Linear16Mono_PCM 
108 \li OpalLineConnection
109 \li OpalLineInterfaceDevice
110 \li OpalLineMediaStream
111 \li OpalLineSilenceDetector
112 \li OpalListener 
113 \li OpalListenerIP 
114 \li OpalListenerTCP 
115 \li OpalListenerUDP 
116 \li Opal_LPC10_PCM 
117 \li OpalMediaFormatList 
118 \li OpalMediaOption 
119 \li OpalMediaOptionEnum 
120 \li OpalMediaOptionString 
121 \li OpalMediaOptionValue 
122 \li OpalMediaStream
123 \li Opal_MSGSM_PCM 
124 \li Opal_MSIMA_PCM 
125 \li OpalNullMediaStream 
126 \li OpalPCM16SilenceDetector 
127 \li Opal_PCM_G711_ALaw 
128 \li Opal_PCM_G711_uLaw 
129 \li Opal_PCM_G726_16 
130 \li Opal_PCM_G726_24 
131 \li Opal_PCM_G726_32 
132 \li Opal_PCM_G726_40 
133 \li Opal_PCM_G729 
134 \li Opal_PCM_GSM0610 
135 \li Opal_PCM_iLBC_13k3 
136 \li Opal_PCM_iLBC_15k2 
137 \li Opal_PCM_Linear16Mono 
138 \li Opal_PCM_LPC10 
139 \li Opal_PCM_MSGSM 
140 \li Opal_PCM_MSIMA 
141 \li Opal_PCM_Speex_11k 
142 \li Opal_PCM_Speex_15k 
143 \li Opal_PCM_Speex_18k2 
144 \li Opal_PCM_Speex_5k95 
145 \li Opal_PCM_Speex_8k 
146 \li OpalPCSSConnection 
147 \li OpalPCSSEndPoint 
148 \li OpalPOTSEndPoint
149 \li OpalPSTNEndPoint
150 \li OpalRawMediaStream 
151 \li OpalRFC2833Info 
152 \li OpalRFC2833Proto
153 \li Opal_RGB24_RGB24 
154 \li Opal_RGB24_YUV420P 
155 \li Opal_RGB32_YUV420P 
156 \li OpalRTPMediaStream 
157 \li OpalSilenceDetector
158 \li Opal_Speex_11k_PCM 
159 \li Opal_Speex_15k_PCM 
160 \li Opal_Speex_18k2_PCM 
161 \li Opal_Speex_5k95_PCM 
162 \li Opal_Speex_8k_PCM 
163 \li Opal_Speex_Decoder 
164 \li Opal_Speex_Encoder 
165 \li Opal_Speex_Transcoder 
166 \li OpalStreamedTranscoder 
167 \li OpalT120Protocol 
168 \li OpalT38Protocol
169 \li OpalTranscoder 
170 \li OpalTranscoderRegistration 
171 \li OpalTransport
172 \li OpalTransportAddress 
173 \li OpalTransportIP 
174 \li OpalTransportTCP 
175 \li OpalTransportUDP 
176 \li OpalUncompVideoTranscoder 
177 \li OpalVideoMediaStream 
178 \li OpalVideoTranscoder 
179 \li OpalVoipBlasterDevice
180 \li OpalVpbDevice
181 \li OpalVXMLSession 
182 \li OpalWAVFile 
183 \li Opal_YUV420P_H261 
184 \li Opal_YUV420P_RGB24 
185 \li Opal_YUV420P_RGB32 
187 Additional information on the working of the IAX2 is \ref pageIAX2Protocol.
189 \subsection history History
191 \li 28 February 2005 -  Converted from Doc++ to Doxygen format by Derek Smithies
193 \li 10 May 2005     - Added some comments to explain data flow in a RTP classes
195 \li 12 May 2005     - Changed main page to list only the Opal classes.
197 \li 11 March 2006   - Add link to description of the IAX2 code.