//**********************************************************************
//
// Filename: src.h
//
// Description: Sample rate converter functions.
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Use of this source code is subject to the terms of the Cirrus end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to
// use this source code. For a copy of the EULA, please see the
// EULA.RTF on your install media.
//
// Copyright(c) Cirrus Logic Corporation 2005, All Rights Reserved
//
//**********************************************************************
#ifndef _H_SRC
#define _H_SRC
//****************************************************************************
//
// The perisistent state of the sample rate converter. Modifications to this
// structure need to be reflected in the tSRC structure in src.h.
//
//****************************************************************************
typedef struct
{
//
// The polyphase sample rate conversion filter. This is actually a two-
// dimensional array with NUMTAPS columns and one row per polyphase.
//
short *psFilter;
//
// The number of taps in thie polyphase filter.
//
short sNumTaps;
//
// The current offset into the polyphase filter. This will always point
// to the beginning of a polyphase row.
//
short sFilterOffset;
//
// The size of the step taken through the polyphase filter when going from
// sample to sample.
//
short sFilterIncr;
//
// The size of the polyphase filter. This is the number of rows times the
// number of columns.
//
short sFilterSize;
BOOL bMono;
BOOL b8Bit;
} tSRC;
long SRCNumSamplesAvailable(tSRC *pSRC, long lSamples);
void Filter
(
tSRC *pSRC,
ULONG *pulInData,
short *psOutData,
long *plInSamples,
long *plOutSamples
);
int SRCInit
(
tSRC *pSRC,
unsigned long ulInputRate,
unsigned long ulOutputRate,
BOOL b8bit,
BOOL bMono
);
#endif // _H_SRC