1 /*! \mainpage OPAL - Open Phone Abstraction Library
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
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
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
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::
78 The remaining Opal classes are listed below.
81 \li OpalAudioMediaStream
82 \li OpalFileMediaStream
83 \li OpalFramedTranscoder
84 \li Opal_G711_ALaw_PCM
85 \li Opal_G711_uLaw_PCM
90 \li Opal_G726_Transcoder
92 \li OpalGloballyUniqueID
96 \li Opal_iLBC_13k3_PCM
97 \li Opal_iLBC_15k2_PCM
99 \li OpalInternalTransport
100 \li OpalIVRConnection
102 \li OpalIVRMediaStream
105 \li OpalLIDRegistration
107 \li Opal_Linear16Mono_PCM
108 \li OpalLineConnection
109 \li OpalLineInterfaceDevice
110 \li OpalLineMediaStream
111 \li OpalLineSilenceDetector
117 \li OpalMediaFormatList
119 \li OpalMediaOptionEnum
120 \li OpalMediaOptionString
121 \li OpalMediaOptionValue
125 \li OpalNullMediaStream
126 \li OpalPCM16SilenceDetector
127 \li Opal_PCM_G711_ALaw
128 \li Opal_PCM_G711_uLaw
135 \li Opal_PCM_iLBC_13k3
136 \li Opal_PCM_iLBC_15k2
137 \li Opal_PCM_Linear16Mono
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
150 \li OpalRawMediaStream
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
170 \li OpalTranscoderRegistration
172 \li OpalTransportAddress
176 \li OpalUncompVideoTranscoder
177 \li OpalVideoMediaStream
178 \li OpalVideoTranscoder
179 \li OpalVoipBlasterDevice
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.