00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef __OPAL_IAX2_MEDIASTRM_H
00039 #define __OPAL_IAX2_MEDIASTRM_H
00040
00041 #ifdef P_USE_PRAGMA
00042 #pragma interface
00043 #endif
00044
00045
00046 #include <opal/buildopts.h>
00047 #include <opal/mediafmt.h>
00048 #include <iax2/iax2con.h>
00049
00050 class RTP_Session;
00051 class OpalMediaPatch;
00052 class OpalLine;
00053
00054
00058 class OpalIAX2MediaStream : public OpalMediaStream
00059 {
00060 PCLASSINFO(OpalIAX2MediaStream, OpalMediaStream);
00061 public:
00066 OpalIAX2MediaStream(
00067 const OpalMediaFormat & mediaFormat,
00068 unsigned sessionID,
00069 BOOL isSource,
00070 unsigned minJitterDelay,
00071 unsigned maxJitterDelay,
00072 IAX2Connection &con
00073 );
00075
00082 virtual BOOL Open();
00083
00089 virtual BOOL Start();
00090
00095 virtual BOOL Close();
00096
00100 virtual BOOL ReadData(
00101 BYTE * data,
00102 PINDEX size,
00103 PINDEX & length
00104 );
00105
00109 virtual BOOL WriteData(
00110 const BYTE * data,
00111 PINDEX length,
00112 PINDEX & written
00113 );
00114
00119 virtual BOOL IsSynchronous() const;
00121
00122 protected:
00124 IAX2Connection &connection;
00125
00129 PBYTEArray pendingData;
00130
00132 unsigned minAudioJitterDelay;
00133
00135 unsigned maxAudioJitterDelay;
00136
00137 };
00138
00139 #endif //__OPAL_IAXs_MEDIASTRM_H
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151