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