1/*
2 *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11/******************************************************************
12
13 iLBC Speech Coder ANSI-C Source Code
14
15 WebRtcIlbcfix_FilteredCbVecs.c
16
17******************************************************************/
18
19#include "defines.h"
20#include "constants.h"
21
22/*----------------------------------------------------------------*
23 *  Construct an additional codebook vector by filtering the
24 *  initial codebook buffer. This vector is then used to expand
25 *  the codebook with an additional section.
26 *---------------------------------------------------------------*/
27
28void WebRtcIlbcfix_FilteredCbVecs(
29    int16_t *cbvectors, /* (o) Codebook vector for the higher section */
30    int16_t *CBmem,  /* (i) Codebook memory that is filtered to create a
31                                           second CB section */
32    int lMem,  /* (i) Length of codebook memory */
33    int16_t samples    /* (i) Number of samples to filter */
34                                  ) {
35
36  /* Set up the memory, start with zero state */
37  WebRtcSpl_MemSetW16(CBmem+lMem, 0, CB_HALFFILTERLEN);
38  WebRtcSpl_MemSetW16(CBmem-CB_HALFFILTERLEN, 0, CB_HALFFILTERLEN);
39  WebRtcSpl_MemSetW16(cbvectors, 0, lMem-samples);
40
41  /* Filter to obtain the filtered CB memory */
42
43  WebRtcSpl_FilterMAFastQ12(
44      CBmem+CB_HALFFILTERLEN+lMem-samples, cbvectors+lMem-samples,
45      (int16_t*)WebRtcIlbcfix_kCbFiltersRev, CB_FILTERLEN, samples);
46
47  return;
48}
49