/* * 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_FilteredCbVecs.c ******************************************************************/ #include "modules/audio_coding/codecs/ilbc/filtered_cb_vecs.h" #include "modules/audio_coding/codecs/ilbc/constants.h" #include "modules/audio_coding/codecs/ilbc/defines.h" /*----------------------------------------------------------------* * Construct an additional codebook vector by filtering the * initial codebook buffer. This vector is then used to expand * the codebook with an additional section. *---------------------------------------------------------------*/ void WebRtcIlbcfix_FilteredCbVecs( int16_t *cbvectors, /* (o) Codebook vector for the higher section */ int16_t *CBmem, /* (i) Codebook memory that is filtered to create a second CB section */ size_t lMem, /* (i) Length of codebook memory */ size_t samples /* (i) Number of samples to filter */ ) { /* Set up the memory, start with zero state */ WebRtcSpl_MemSetW16(CBmem+lMem, 0, CB_HALFFILTERLEN); WebRtcSpl_MemSetW16(CBmem-CB_HALFFILTERLEN, 0, CB_HALFFILTERLEN); WebRtcSpl_MemSetW16(cbvectors, 0, lMem-samples); /* Filter to obtain the filtered CB memory */ WebRtcSpl_FilterMAFastQ12( CBmem+CB_HALFFILTERLEN+lMem-samples, cbvectors+lMem-samples, (int16_t*)WebRtcIlbcfix_kCbFiltersRev, CB_FILTERLEN, samples); return; }