/*
 * iLBC - a library for the iLBC codec
 *
 * createCB.h - The iLBC low bit rate speech codec.
 *
 * Adapted by Steve Underwood <steveu@coppice.org> from the reference
 * iLBC code supplied in RFC3951.
 *
 * Original code Copyright (C) The Internet Society (2004).
 * All changes to produce this version Copyright (C) 2008 by Steve Underwood
 * All Rights Reserved.
 *
 * 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.
 *
 * $Id: createCB.h,v 1.2 2008/03/06 12:27:38 steveu Exp $
 */

#ifndef __iLBC_CREATECB_H
#define __iLBC_CREATECB_H

void filteredCBvecs(float *cbvectors,       /* (o) Codebook vector for the
                                                   higher section */
                    float *mem,             /* (i) Buffer to create codebook
                                                   vectors from */
                    int lMem);              /* (i) Length of buffer */

void searchAugmentedCB(int low,             /* (i) Start index for the search */
                       int high,            /* (i) End index for the search */
                       int stage,           /* (i) Current stage */
                       int startIndex,      /* (i) CB index for the first
                                                   augmented vector */
                       float *target,       /* (i) Target vector for encoding */
                       float *buffer,       /* (i) Pointer to the end of the
                                                   buffer for augmented codebook
                                                   construction */
                       float *max_measure,  /* (i/o) Currently maximum measure */
                       int *best_index,     /* (o) Currently the best index */
                       float *gain,         /* (o) Currently the best gain */
                       float *energy,       /* (o) Energy of augmented
                                                   codebook vectors */
                       float *invenergy);   /* (o) Inv energy of aug codebook vectors */

void createAugmentedVec(int index,          /* (i) Index for the aug vector to be created */
                        float *buffer,      /* (i) Pointer to the end of the
                                                   buffer for augmented codebook
                                                   construction */
                        float *cbVec);      /* (o) The construced codebook vector */

#endif
