RTP Audio System  2.0.0
simpleaudiopacket.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines