/* dtx.h Copyright (C) 2015 Belledonne Communications, Grenoble, France Author : Johan Pascal This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef DTX_H #define DTX_H /*****************************************************************************/ /* initBcg729DTXChannel : create context structure and initialise it */ /* return value : */ /* - the DTX channel context data */ /* */ /*****************************************************************************/ bcg729DTXChannelContextStruct *initBcg729DTXChannel(); /*******************************************************************************************/ /* updateDTXContext : save autocorrelation value in DTX context as requested in B4.1.1 */ /* parameters: */ /* -(i/o) DTXChannelContext : the DTX context to be updated */ /* -(i) autocorrelationsCoefficients : 11 values of variable scale, values are copied */ /* in DTX context */ /* -(i) autocorrelationCoefficientsScale : the scale of previous buffer(can be <0) */ /* */ /*******************************************************************************************/ void updateDTXContext(bcg729DTXChannelContextStruct *DTXChannelContext, word32_t *autocorrelationCoefficients, int8_t autocorrelationCoefficientsScale); /*******************************************************************************************/ /* encodeSIDFrame: called at eache frame even if VADflag is set to active speech */ /* Update the previousVADflag and if curent is set to NOISE, compute the SID params */ /* parameters: */ /* -(i/o) DTXChannelContext: current DTX context, is updated by this function */ /* -(o) previousLSPCoefficients : 10 values in Q15, is updated by this function */ /* -(i/o) previousqLSPCoefficients : 10 values in Q15, is updated by this function */ /* -(i) VADflag : 1 active voice frame, 0 noise frame */ /* -(i/o) previousqLSF : set of 4 last frames qLSF in Q2.13, is updated */ /* -(i/o) excicationVector : in Q0, accessed in range [-L_PAST_EXCITATION,L_FRAME-1] */ /* -(o) qLPCoefficients : 20 values in Q3.12 the quantized LP coefficients */ /* -(o) bitStream : SID frame parameters on 2 bytes, may be null if no frame is to be */ /* transmitted */ /* -(o) bitStreamLength : length of bitStream buffer to be transmitted (2 for SID, 0 for */ /* untransmitted frame) */ /* */ /*******************************************************************************************/ void encodeSIDFrame(bcg729DTXChannelContextStruct *DTXChannelContext, word16_t *previousLSPCoefficients, word16_t *previousqLSPCoefficients, uint8_t VADflag, word16_t previousqLSF[MA_MAX_K][NB_LSP_COEFF], word16_t *excitationVector, word16_t *qLPCoefficients, uint8_t *bitStream, uint8_t *bitStreamLength); #endif /* ifndef DTX_H */