RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Simple Audio Packet #### 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: simpleaudiopacket.h 1286 2011-12-18 13:43:16Z dreibh $ 00032 00033 00034 #ifndef SIMPLEAUDIOPACKET_H 00035 #define SIMPLEAUDIOPACKET_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "mediainfo.h" 00040 #include "audioquality.h" 00041 00042 00053 struct SimpleAudioPacket 00054 { 00055 // ====== Constructor ==================================================== 00056 public: 00060 SimpleAudioPacket(); 00061 00062 // ====== Byte order translation ========================================= 00066 void translate(); 00067 00068 00069 // ====== Status functions =============================================== 00073 void reset(); 00074 00075 00076 // ====== Constants ====================================================== 00080 static const card16 SimpleAudioTypeID = 0x2960; 00081 00085 static const char SimpleAudioTypeName[]; 00086 00090 static const card32 SimpleAudioFormatID = 0x74660000 | SimpleAudioTypeID; 00091 00095 static const cardinal SimpleAudioMediaInfoPacketsPerSecond = 1; 00096 00100 static const cardinal SimpleAudioFramesPerSecond = 15; 00101 00105 static const cardinal SimpleAudioFrameSize = 2352 * 5; 00106 00110 static const cardinal SimpleAudioMaxTransferDelay = 1500 * 16; // 1500 ms. 00111 00115 static const cardinal SimpleAudioQualityLevels = AudioQuality::QualityLevels; 00116 00117 00131 static AudioQuality calculateQualityForLimits( 00132 const AudioQualityInterface& userSetting, 00133 const AudioQualityInterface& inputQuality, 00134 const card64 totalByteRateLimit, 00135 const cardinal networkQualityDecrement, 00136 const cardinal headerSize, 00137 const cardinal maxPacketSize); 00138 00139 00148 static cardinal calculateFrameSize(const cardinal inputBytesPerSecond, 00149 const cardinal inputFrameSize); 00150 00151 00152 // ====== Packet data ==================================================== 00153 public: 00157 card32 FormatID; 00158 00162 card16 SamplingRate; 00163 00167 card8 Channels; 00168 00172 card8 Bits; 00173 00177 card64 Position; 00178 00182 card64 MaxPosition; 00183 00187 card8 ErrorCode; 00188 00192 card8 Flags; 00193 00197 enum SimpleAudioFlags { 00198 SAF_Data = 0, 00199 SAF_MediaInfo = 1, 00200 }; 00201 00205 char Data[]; 00206 } __attribute__((packed)); 00207 00208 00209 #endif