/* * 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. */ /****************************************************************** iLBC Speech Coder ANSI-C Source Code WebRtcIlbcfix_SimpleLsfDeQ.c ******************************************************************/ #include "modules/audio_coding/codecs/ilbc/simple_lsf_dequant.h" #include "modules/audio_coding/codecs/ilbc/constants.h" #include "modules/audio_coding/codecs/ilbc/defines.h" /*----------------------------------------------------------------* * obtain dequantized lsf coefficients from quantization index *---------------------------------------------------------------*/ void WebRtcIlbcfix_SimpleLsfDeQ( int16_t *lsfdeq, /* (o) dequantized lsf coefficients */ int16_t *index, /* (i) quantization index */ int16_t lpc_n /* (i) number of LPCs */ ){ int i, j, pos, cb_pos; /* decode first LSF */ pos = 0; cb_pos = 0; for (i = 0; i < LSF_NSPLIT; i++) { for (j = 0; j < WebRtcIlbcfix_kLsfDimCb[i]; j++) { lsfdeq[pos + j] = WebRtcIlbcfix_kLsfCb[cb_pos + j + index[i] * WebRtcIlbcfix_kLsfDimCb[i]]; } pos += WebRtcIlbcfix_kLsfDimCb[i]; cb_pos += WebRtcIlbcfix_kLsfSizeCb[i] * WebRtcIlbcfix_kLsfDimCb[i]; } if (lpc_n>1) { /* decode last LSF */ pos = 0; cb_pos = 0; for (i = 0; i < LSF_NSPLIT; i++) { for (j = 0; j < WebRtcIlbcfix_kLsfDimCb[i]; j++) { lsfdeq[LPC_FILTERORDER + pos + j] = WebRtcIlbcfix_kLsfCb[ cb_pos + index[LSF_NSPLIT + i] * WebRtcIlbcfix_kLsfDimCb[i] + j]; } pos += WebRtcIlbcfix_kLsfDimCb[i]; cb_pos += WebRtcIlbcfix_kLsfSizeCb[i] * WebRtcIlbcfix_kLsfDimCb[i]; } } return; }