/* * 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. */ /* * This file contains the DTMF tone generator function. */ #ifndef DTMF_TONEGEN_H #define DTMF_TONEGEN_H #include "typedefs.h" #include "neteq_defines.h" #ifdef NETEQ_ATEVENT_DECODE /* Must compile NetEQ with DTMF support to enable the functionality */ #define DTMF_AMP_LOW 23171 /* 3 dB lower than the high frequency */ /* The DTMF generator struct (part of DSP main struct DSPInst_t) */ typedef struct dtmf_tone_inst_t_ { WebRtc_Word16 reinit; /* non-zero if the oscillator model should be reinitialized for next event */ WebRtc_Word16 oldOutputLow[2]; /* oscillator recursion history (low tone) */ WebRtc_Word16 oldOutputHigh[2]; /* oscillator recursion history (high tone) */ int lastDtmfSample; /* index to the first non-DTMF sample in the speech history, if non-negative */ }dtmf_tone_inst_t; /**************************************************************************** * WebRtcNetEQ_DTMFGenerate(...) * * Generate 10 ms DTMF signal according to input parameters. * * Input: * - DTMFdecInst : DTMF instance * - value : DTMF event number (0-15) * - volume : Volume of generated signal (0-36) * Volume is given in negative dBm0, i.e., volume == 0 * means 0 dBm0 while volume == 36 mean -36 dBm0. * - sampFreq : Sample rate in Hz * * Output: * - signal : Pointer to vector where DTMF signal is stored; * Vector must be at least sampFreq/100 samples long. * - DTMFdecInst : Updated DTMF instance * * Return value : >0 - Number of samples written to signal * : <0 - Error */ WebRtc_Word16 WebRtcNetEQ_DTMFGenerate(dtmf_tone_inst_t *DTMFdecInst, WebRtc_Word16 value, WebRtc_Word16 volume, WebRtc_Word16 *signal, WebRtc_UWord16 sampFreq, WebRtc_Word16 frameLen ); #endif /* NETEQ_ATEVENT_DECODE */ #endif /* DTMF_TONEGEN_H */