RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Advanced Audio Encoder #### 00007 // #### #### 00008 // #### Copyright (C) 1999-2012 by Thomas Dreibholz #### 00009 // #### #### 00010 // #### Contact: #### 00011 // #### EMail: dreibh@iem.uni-due.de #### 00012 // #### WWW: https://www.nntb.no/~dreibh/rtpaudio #### 00013 // #### #### 00014 // #### ---------------------------------------------------------------- #### 00015 // #### #### 00016 // #### This program is free software: you can redistribute it and/or #### 00017 // #### modify it under the terms of the GNU General Public License as #### 00018 // #### published by the Free Software Foundation, either version 3 of #### 00019 // #### the License, or (at your option) any later version. #### 00020 // #### #### 00021 // #### This program is distributed in the hope that it will be useful, #### 00022 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of #### 00023 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #### 00024 // #### GNU General Public License for more details. #### 00025 // #### #### 00026 // #### You should have received a copy of the GNU General Public #### 00027 // #### License along with this program. If not, see #### 00028 // #### <http://www.gnu.org/licenses/>. #### 00029 // #### #### 00030 // ########################################################################## 00031 // $Id: advancedaudioencoder.h 1286 2011-12-18 13:43:16Z dreibh $ 00032 00033 00034 #ifndef ADVANCEDAUDIOENCODER_H 00035 #define ADVANCEDAUDIOENCDOER_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "audioencoderinterface.h" 00040 #include "audioreaderinterface.h" 00041 #include "audioquality.h" 00042 00043 00053 class AdvancedAudioEncoder : public AudioEncoderInterface, 00054 public AudioQuality 00055 { 00056 // ====== Constructor/Destructor ========================================= 00057 public: 00063 AdvancedAudioEncoder(AudioReaderInterface* audioReader); 00064 00068 ~AdvancedAudioEncoder(); 00069 00070 00071 // ====== EncoderInterface implementation ================================ 00077 const card16 getTypeID() const; 00078 00084 const char* getTypeName() const; 00085 00091 void activate(); 00092 00098 void deactivate(); 00099 00105 void reset(); 00106 00112 bool checkInterval(card64& time, bool& newRUList); 00113 00119 bool prepareNextFrame(const cardinal headerSize, 00120 const cardinal maxPacketSize, 00121 const cardinal flags); 00122 00128 cardinal getNextPacket(EncoderPacket* encoderPacket); 00129 00130 00131 // ====== Settings ======================================================== 00137 double getFrameRate() const; 00138 00144 AbstractQoSDescription* getQoSDescription( 00145 const cardinal pktHeaderSize, 00146 const cardinal pktMaxSize, 00147 const card64 offset); 00148 00154 void updateQuality(const AbstractQoSDescription* aqd); 00155 00156 00157 // ====== Private data =================================================== 00158 private: 00159 AudioReaderInterface* Source; 00160 00161 card64 FramePosition; // Current frame 00162 card64 FrameMaxPosition; 00163 AudioQuality FrameQualitySetting; 00164 card8* FrameBufferLL; 00165 card8* FrameBufferRL; 00166 card8* FrameBufferLU; 00167 card8* FrameBufferRU; 00168 cardinal FrameBufferPosLL; 00169 cardinal FrameBufferPosRL; 00170 cardinal FrameBufferPosLU; 00171 cardinal FrameBufferPosRU; 00172 cardinal FrameFragmentLL; 00173 cardinal FrameFragmentRL; 00174 cardinal FrameFragmentLU; 00175 cardinal FrameFragmentRU; 00176 cardinal FrameBufferSizeLL; 00177 cardinal FrameBufferSizeRL; 00178 cardinal FrameBufferSizeLU; 00179 cardinal FrameBufferSizeRU; 00180 cardinal FrameLayerLL; 00181 cardinal FrameLayerRL; 00182 cardinal FrameLayerLU; 00183 cardinal FrameLayerRU; 00184 00185 integer MediaInfoCounter; 00186 00187 card64 TotalByteRateLimit; 00188 card64 ByteRateLimitL1; 00189 card64 ByteRateLimitL2; 00190 card64 ByteRateLimitL3; 00191 cardinal NetworkQualityDecrement; 00192 cardinal SendError; 00193 cardinal SentError; 00194 card8 ErrorCode; 00195 }; 00196 00197 00198 #endif