• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef WEBRTC_MODULES_AUDIO_CODING_MAIN_INTERFACE_AUDIO_CODING_MODULE_TYPEDEFS_H_
12 #define WEBRTC_MODULES_AUDIO_CODING_MAIN_INTERFACE_AUDIO_CODING_MODULE_TYPEDEFS_H_
13 
14 #include <map>
15 
16 #include "webrtc/modules/interface/module_common_types.h"
17 #include "webrtc/typedefs.h"
18 
19 namespace webrtc {
20 
21 ///////////////////////////////////////////////////////////////////////////
22 // enum AudioPlayoutMode
23 // An enumerator for different playout modes.
24 //
25 // -voice       : This is the standard mode for VoIP calls. The trade-off
26 //                between low delay and jitter robustness is optimized
27 //                for high-quality two-way communication.
28 //                NetEQs packet loss concealment and signal processing
29 //                capabilities are fully employed.
30 // -fax         : The fax mode is optimized for decodability of fax signals
31 //                rather than for perceived audio quality. When this mode
32 //                is selected, NetEQ will do as few delay changes as possible,
33 //                trying to maintain a high and constant delay. Meanwhile,
34 //                the packet loss concealment efforts are reduced.
35 //
36 // -streaming   : In the case of one-way communication such as passive
37 //                conference participant, a webinar, or a streaming application,
38 //                this mode can be used to improve the jitter robustness at
39 //                the cost of increased delay.
40 // -off         : Turns off most of NetEQ's features. Stuffs zeros for lost
41 //                packets and during buffer increases.
42 //
43 enum AudioPlayoutMode {
44   voice = 0,
45   fax = 1,
46   streaming = 2,
47   off = 3,
48 };
49 
50 ///////////////////////////////////////////////////////////////////////////
51 // enum ACMSpeechType
52 // An enumerator for possible labels of a decoded frame.
53 //
54 // -normal      : a normal speech frame. If VAD is enabled on the
55 //                incoming stream this label indicate that the
56 //                frame is active.
57 // -PLC         : a PLC frame. The corresponding packet was lost
58 //                and this frame generated by PLC techniques.
59 // -CNG         : the frame is comfort noise. This happens if VAD
60 //                is enabled at the sender and we have received
61 //                SID.
62 // -PLCCNG      : PLC will fade to comfort noise if the duration
63 //                of PLC is long. This labels such a case.
64 // -VADPassive  : the VAD at the receiver recognizes this frame as
65 //                passive.
66 //
67 enum ACMSpeechType {
68   normal = 0,
69   PLC = 1,
70   CNG = 2,
71   PLCCNG = 3,
72   VADPassive = 4
73 };
74 
75 ///////////////////////////////////////////////////////////////////////////
76 // enum ACMVADMode
77 // An enumerator for aggressiveness of VAD
78 // -VADNormal                : least aggressive mode.
79 // -VADLowBitrate            : more aggressive than "VADNormal" to save on
80 //                             bit-rate.
81 // -VADAggr                  : an aggressive mode.
82 // -VADVeryAggr              : the most agressive mode.
83 //
84 enum ACMVADMode {
85   VADNormal = 0,
86   VADLowBitrate = 1,
87   VADAggr = 2,
88   VADVeryAggr = 3
89 };
90 
91 ///////////////////////////////////////////////////////////////////////////
92 // enum ACMCountries
93 // An enumerator for countries, used when enabling CPT for a specific country.
94 //
95 enum ACMCountries {
96   ACMDisableCountryDetection = -1, // disable CPT detection
97   ACMUSA = 0,
98   ACMJapan,
99   ACMCanada,
100   ACMFrance,
101   ACMGermany,
102   ACMAustria,
103   ACMBelgium,
104   ACMUK,
105   ACMCzech,
106   ACMDenmark,
107   ACMFinland,
108   ACMGreece,
109   ACMHungary,
110   ACMIceland,
111   ACMIreland,
112   ACMItaly,
113   ACMLuxembourg,
114   ACMMexico,
115   ACMNorway,
116   ACMPoland,
117   ACMPortugal,
118   ACMSpain,
119   ACMSweden,
120   ACMTurkey,
121   ACMChina,
122   ACMHongkong,
123   ACMTaiwan,
124   ACMKorea,
125   ACMSingapore,
126   ACMNonStandard1
127 // non-standard countries
128 };
129 
130 ///////////////////////////////////////////////////////////////////////////
131 // enum ACMAMRPackingFormat
132 // An enumerator for different bit-packing format of AMR codec according to
133 // RFC 3267.
134 //
135 // -AMRUndefined           : undefined.
136 // -AMRBandwidthEfficient  : bandwidth-efficient mode.
137 // -AMROctetAlligned       : Octet-alligned mode.
138 // -AMRFileStorage         : file-storage mode.
139 //
140 enum ACMAMRPackingFormat {
141   AMRUndefined = -1,
142   AMRBandwidthEfficient = 0,
143   AMROctetAlligned = 1,
144   AMRFileStorage = 2
145 };
146 
147 
148 ///////////////////////////////////////////////////////////////////////////
149 //
150 //   Struct containing network statistics
151 //
152 // -currentBufferSize      : current jitter buffer size in ms
153 // -preferredBufferSize    : preferred (optimal) buffer size in ms
154 // -jitterPeaksFound       : indicate if peaky-jitter mode is engaged, that is,
155 //                           if severe but sparse network delays have occurred.
156 // -currentPacketLossRate  : loss rate (network + late) (in Q14)
157 // -currentDiscardRate     : late loss rate (in Q14)
158 // -currentExpandRate      : fraction (of original stream) of synthesized
159 //                           speech inserted through expansion (in Q14)
160 // -currentPreemptiveRate  : fraction of synthesized speech inserted through
161 //                           pre-emptive expansion (in Q14)
162 // -currentAccelerateRate  : fraction of data removed through acceleration
163 //                           (in Q14)
164 // -clockDriftPPM          : clock-drift between sender and receiver in parts-
165 //                           per-million. Positive means that receiver sample
166 //                           rate is higher than sender sample rate.
167 // -meanWaitingTimeMs      : average packet waiting time in the buffer
168 // -medianWaitingTimeMs    : median packet waiting time in the buffer
169 // -minWaitingTimeMs       : min packet waiting time in the buffer
170 // -maxWaitingTimeMs       : max packet waiting time in the buffer
171 // -addedSamples           : samples inserted because of packet loss in off mode
172 typedef struct {
173   uint16_t currentBufferSize;
174   uint16_t preferredBufferSize;
175   bool jitterPeaksFound;
176   uint16_t currentPacketLossRate;
177   uint16_t currentDiscardRate;
178   uint16_t currentExpandRate;
179   uint16_t currentPreemptiveRate;
180   uint16_t currentAccelerateRate;
181   int32_t clockDriftPPM;
182   int meanWaitingTimeMs;
183   int medianWaitingTimeMs;
184   int minWaitingTimeMs;
185   int maxWaitingTimeMs;
186   int addedSamples;
187 } ACMNetworkStatistics;
188 
189 ///////////////////////////////////////////////////////////////////////////
190 //
191 // Enumeration of background noise mode a mapping from NetEQ interface.
192 //
193 // -On                  : default "normal" behavior with eternal noise
194 // -Fade                : noise fades to zero after some time
195 // -Off                 : background noise is always zero
196 //
197 enum ACMBackgroundNoiseMode {
198   On,
199   Fade,
200   Off
201 };
202 
203 }  // namespace webrtc
204 
205 #endif  // WEBRTC_MODULES_AUDIO_CODING_MAIN_INTERFACE_AUDIO_CODING_MODULE_TYPEDEFS_H_
206