RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Audio Client App 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: audioclientapppacket.h 1286 2011-12-18 13:43:16Z dreibh $ 00032 00033 00034 #ifndef AUDIOCLIENTAPPPACKET_H 00035 #define AUDIOCLIENTAPPPACKET_H 00036 00037 00038 // #include <linux/ip.h> 00039 00040 00041 // ###### IPv6 Traffic Class Settings ####################################### 00045 const card8 AudioServerDefaultTrafficClass = 0x00; 00046 // IPTOS_THROUGHPUT|IPTOS_RELIABILITY|IPTOS_LOWDELAY|IPTOS_PREC_FLASH; 00047 00051 const card8 AudioClientDefaultTrafficClass = 0x00; 00052 // IPTOS_RELIABILITY|IPTOS_PREC_PRIORITY; 00053 00057 static const cardinal RTPAudioDefaultPort = 7500; 00058 00062 static const card32 RTPAudioDataPPID = 0x2909ffff; 00063 00067 static const card32 RTPAudioControlPPID = 0x2909fffe; 00068 00069 00081 struct AudioClientAppPacket 00082 { 00083 // ====== Constructor ==================================================== 00084 public: 00088 AudioClientAppPacket(); 00089 00090 // ====== Byte order translation ========================================= 00094 void translate(); 00095 00096 00097 // ====== Status functions =============================================== 00101 void reset(); 00102 00103 00104 // ====== Constants ====================================================== 00108 static const card32 AudioClientFormatID = 0x75003388; 00109 00113 enum AudioClientAppMode { 00114 ACAS_UnknownCommand = 0, 00115 ACAS_Play = 1, 00116 ACAS_Pause = 2 00117 }; 00118 00119 00120 // ====== Packet data ==================================================== 00121 public: 00125 card32 FormatID; 00126 00130 card16 SequenceNumber; 00131 00135 card16 PosChgSeqNumber; 00136 00137 00141 card16 Status; 00142 00146 card16 SamplingRate; 00147 00151 card8 Channels; 00152 00156 card8 Bits; 00157 00161 card16 Encoding; 00162 00166 card32 BandwidthLimit; 00167 00171 card64 StartPosition; 00172 00176 card64 RestartPosition; 00177 00181 char MediaName[128]; 00182 } __attribute__((packed)); 00183 00184 00196 struct AudioClientSDESPrivPacket 00197 { 00198 card8 PrefixLength; 00199 char Prefix[7]; 00200 AudioClientAppPacket Status; 00201 } __attribute__((packed)); 00202 00203 00204 #endif