blob: c0e06efcd5c23d450072ad00bc2d022fb8e311a7 [file] [log] [blame]
/*
* 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_