RTP Trace System
1.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Encoder Interface #### 00007 // #### #### 00008 // #### Version 1.00 -- February 16, 2001 #### 00009 // #### #### 00010 // #### Copyright (C) 1999 Thomas Dreibholz #### 00011 // #### 2000 Universität Bonn, Abt. IV #### 00012 // #### 2001 EMail: dreibh@iem.uni-due.de #### 00013 // #### WWW: https://www.uni-due.de/~be0001 #### 00014 // #### #### 00015 // ########################################################################## 00016 00017 00018 #ifndef ENCODERINTERFACE_H 00019 #define ENCODERINTERFACE_H 00020 00021 00022 #include "system.h" 00023 #include "range.h" 00024 #ifdef USE_TRANSPORTINFO 00025 #include "transportinfo.h" 00026 #else 00027 #include "abstractqosdescription.h" 00028 #endif 00029 00030 00031 namespace Coral { 00032 00033 00041 struct EncoderPacket 00042 { 00046 void* Buffer; 00047 00051 cardinal MaxLength; 00052 00056 cardinal Layer; 00057 00061 card8 PayloadType; 00062 00066 bool Marker; 00067 00072 card8 ErrorCode; 00073 }; 00074 00075 00076 00084 class EncoderInterface 00085 { 00086 // ====== Destructor ===================================================== 00087 public: 00091 virtual ~EncoderInterface(); 00092 00093 00094 // ====== Encoder type =================================================== 00100 virtual const card16 getTypeID() const = 0; 00101 00107 virtual const char* getTypeName() const = 0; 00108 00109 00110 // ====== Initialization/Clean-up ======================================== 00115 virtual void activate() = 0; 00116 00121 virtual void deactivate() = 0; 00122 00127 virtual void reset() = 0; 00128 00129 00130 // ====== Encode frame =================================================== 00131 #ifndef USE_TRANSPORTINFO 00132 00139 virtual bool checkInterval(card64& time, bool& newRUList) = 0; 00140 #endif 00141 00142 00153 virtual bool prepareNextFrame(const cardinal headerSize, 00154 const cardinal maxPacketSize, 00155 const cardinal flags = 0) = 0; 00156 00166 virtual cardinal getNextPacket(EncoderPacket* packet) = 0; 00167 00168 00169 // ====== Settings ======================================================= 00170 #ifdef USE_TRANSPORTINFO 00171 00183 virtual void getTransportInfo(TransportInfo& transportInfo, 00184 const cardinal headerSize, 00185 const cardinal maxPacketSize, 00186 const bool calculateLevels = true) const = 0; 00187 00203 virtual void setTransportInfo(TransportInfo& transportInfo, 00204 const cardinal headerSize, 00205 const cardinal maxPacketSize, 00206 const bool calculateLevels = true) = 0; 00207 00215 virtual void adaptQuality(const double fractionLost, 00216 const cardinal layer) = 0; 00217 00218 #else 00219 00229 virtual AbstractQoSDescription* getQoSDescription( 00230 const cardinal pktHeaderSize, 00231 const cardinal pktMaxSize, 00232 const card64 offset) = 0; 00233 00240 virtual void updateQuality(const AbstractQoSDescription* aqd) = 0; 00241 00242 #endif 00243 }; 00244 00245 00246 } 00247 00248 00249 #endif