| /* |
| * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #ifndef WEBRTC_MODULES_AUDIO_CODING_MAIN_INTERFACE_AUDIO_CODING_MODULE_TYPEDEFS_H_ |
| #define WEBRTC_MODULES_AUDIO_CODING_MAIN_INTERFACE_AUDIO_CODING_MODULE_TYPEDEFS_H_ |
| |
| #include "typedefs.h" |
| |
| namespace webrtc { |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // enum AudioPlayoutMode |
| // An enumerator for different playout modes. |
| // |
| // -voice : This is the standard mode for VoIP calls. The trade-off |
| // between low delay and jitter robustness is optimized |
| // for high-quality two-way communication. |
| // NetEQs packet loss concealment and signal processing |
| // capabilities are fully employed. |
| // -fax : The fax mode is optimized for decodability of fax signals |
| // rather than for perceived audio quality. When this mode |
| // is selected, NetEQ will do as few delay changes as possible, |
| // trying to maintain a high and constant delay. Meanwhile, |
| // the packet loss concealment efforts are reduced. |
| // |
| // -streaming : In the case of one-way communication such as passive |
| // conference participant, a webinar, or a streaming application, |
| // this mode can be used to improve the jitter robustness at |
| // the cost of increased delay. |
| // |
| enum AudioPlayoutMode { |
| voice = 0, |
| fax = 1, |
| streaming = 2 |
| }; |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // enum ACMSpeechType |
| // An enumerator for possible labels of a decoded frame. |
| // |
| // -normal : a normal speech frame. If VAD is enabled on the |
| // incoming stream this label indicate that the |
| // frame is active. |
| // -PLC : a PLC frame. The corresponding packet was lost |
| // and this frame generated by PLC techniques. |
| // -CNG : the frame is comfort noise. This happens if VAD |
| // is enabled at the sender and we have received |
| // SID. |
| // -PLCCNG : PLC will fade to comfort noise if the duration |
| // of PLC is long. This labels such a case. |
| // -VADPassive : the VAD at the receiver recognizes this frame as |
| // passive. |
| // |
| enum ACMSpeechType { |
| normal = 0, |
| PLC = 1, |
| CNG = 2, |
| PLCCNG = 3, |
| VADPassive = 4 |
| }; |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // enum ACMVADMode |
| // An enumerator for aggressiveness of VAD |
| // -VADNormal : least aggressive mode. |
| // -VADLowBitrate : more aggressive than "VADNormal" to save on |
| // bit-rate. |
| // -VADAggr : an aggressive mode. |
| // -VADVeryAggr : the most agressive mode. |
| // |
| enum ACMVADMode { |
| VADNormal = 0, |
| VADLowBitrate = 1, |
| VADAggr = 2, |
| VADVeryAggr = 3 |
| }; |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // enum ACMCountries |
| // An enumerator for countries, used when enabling CPT for a specific country. |
| // |
| enum ACMCountries { |
| ACMDisableCountryDetection = -1, // disable CPT detection |
| ACMUSA = 0, |
| ACMJapan, |
| ACMCanada, |
| ACMFrance, |
| ACMGermany, |
| ACMAustria, |
| ACMBelgium, |
| ACMUK, |
| ACMCzech, |
| ACMDenmark, |
| ACMFinland, |
| ACMGreece, |
| ACMHungary, |
| ACMIceland, |
| ACMIreland, |
| ACMItaly, |
| ACMLuxembourg, |
| ACMMexico, |
| ACMNorway, |
| ACMPoland, |
| ACMPortugal, |
| ACMSpain, |
| ACMSweden, |
| ACMTurkey, |
| ACMChina, |
| ACMHongkong, |
| ACMTaiwan, |
| ACMKorea, |
| ACMSingapore, |
| ACMNonStandard1 |
| // non-standard countries |
| }; |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // enum ACMAMRPackingFormat |
| // An enumerator for different bit-packing format of AMR codec according to |
| // RFC 3267. |
| // |
| // -AMRUndefined : undefined. |
| // -AMRBandwidthEfficient : bandwidth-efficient mode. |
| // -AMROctetAlligned : Octet-alligned mode. |
| // -AMRFileStorage : file-storage mode. |
| // |
| enum ACMAMRPackingFormat { |
| AMRUndefined = -1, |
| AMRBandwidthEfficient = 0, |
| AMROctetAlligned = 1, |
| AMRFileStorage = 2 |
| }; |
| |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // |
| // Struct containing network statistics |
| // |
| // -currentBufferSize : current jitter buffer size in ms |
| // -preferredBufferSize : preferred (optimal) buffer size in ms |
| // -jitterPeaksFound : indicate if peaky-jitter mode is engaged, that is, |
| // if severe but sparse network delays have occurred. |
| // -currentPacketLossRate : loss rate (network + late) (in Q14) |
| // -currentDiscardRate : late loss rate (in Q14) |
| // -currentExpandRate : fraction (of original stream) of synthesized |
| // speech inserted through expansion (in Q14) |
| // -currentPreemptiveRate : fraction of synthesized speech inserted through |
| // pre-emptive expansion (in Q14) |
| // -currentAccelerateRate : fraction of data removed through acceleration |
| // (in Q14) |
| // -clockDriftPPM : clock-drift between sender and receiver in parts- |
| // per-million. Positive means that receiver sample |
| // rate is higher than sender sample rate. |
| // -meanWaitingTimeMs : average packet waiting time in the buffer |
| // -medianWaitingTimeMs : median packet waiting time in the buffer |
| // -minWaitingTimeMs : min packet waiting time in the buffer |
| // -maxWaitingTimeMs : max packet waiting time in the buffer |
| typedef struct { |
| WebRtc_UWord16 currentBufferSize; |
| WebRtc_UWord16 preferredBufferSize; |
| bool jitterPeaksFound; |
| WebRtc_UWord16 currentPacketLossRate; |
| WebRtc_UWord16 currentDiscardRate; |
| WebRtc_UWord16 currentExpandRate; |
| WebRtc_UWord16 currentPreemptiveRate; |
| WebRtc_UWord16 currentAccelerateRate; |
| int32_t clockDriftPPM; |
| int meanWaitingTimeMs; |
| int medianWaitingTimeMs; |
| int minWaitingTimeMs; |
| int maxWaitingTimeMs; |
| } ACMNetworkStatistics; |
| |
| /////////////////////////////////////////////////////////////////////////// |
| // |
| // Enumeration of background noise mode a mapping from NetEQ interface. |
| // |
| // -On : default "normal" behavior with eternal noise |
| // -Fade : noise fades to zero after some time |
| // -Off : background noise is always zero |
| // |
| enum ACMBackgroundNoiseMode { |
| On, |
| Fade, |
| Off |
| }; |
| |
| } // namespace webrtc |
| |
| #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_INTERFACE_AUDIO_CODING_MODULE_TYPEDEFS_H_ |