📄 fir.c
字号:
/*
* Copyright 2001 by Texas Instruments Incorporated.
* All rights reserved. Property of Texas Instruments Incorporated.
* Restricted rights to use, duplicate or disclose this code are
* granted through contract.
* U.S. Patent Nos. 5,283,900 5,392,448
*/
/* "@(#) DSP/BIOS 4.51.0 05-23-01 (barracuda-i10)" */
/***************************************************************************/
/* */
/* V O L U M E . C */
/* */
/* Audio gain processing in a main loop */
/* */
/***************************************************************************/
#include <stdio.h>
#include "volume.h"
/* Global declarations */
short inp_buffer[BUFSIZE]; /* processing data buffers */
short out_buffer[BUFSIZE]={0x00000000,
0x0000000f,
0x0000001e,
0x0000002d,
0x0000003a,
0x00000046,
0x00000050,
0x00000059};
short h[BUFSIZE]={1,2,3,4,5,6,7,8};
int gain = MINGAIN; /* volume control variable */
unsigned int processingLoad = BASELOAD; /* processing routine load value */
struct PARMS str =
{
2934,
9432,
213,
9432,
&str
};
/* Functions */
extern void load(unsigned int loadValue);
static int processing(short *input, short *output);
static void dataIO(void);
void fir8(short x[], short h[], short y[], int N, int M)
{
int i, j, sum;
for (j = 0; j < M; j++) {
sum = 0;
for (i = 0; i < N; i++)
sum += x[i + j] * h[i];
y[j] = sum >> 15;
}
}
/*
* ======== main ========
*/
void main()
{
short *input = &inp_buffer[0];
short *output = &out_buffer[0];
puts("volume example started\n");
/* loop forever */
while(TRUE)
{
/*
* Read input data using a probe-point connected to a host file.
* Write output data to a graph connected through a probe-point.
*/
dataIO();
#ifdef FILEIO
puts("begin processing") /* deliberate syntax error */
#endif
/* apply gain */
processing(input, output);
}
}
/*
* ======== processing ========
*
* FUNCTION: apply signal processing transform to input signal.
*
* PARAMETERS: address of input and output buffers.
*
* RETURN VALUE: TRUE.
*/
static int processing(short *input, short *output)
{
fir8( input, &h[0],output, 8, 2);
/* additional processing load */
load(processingLoad);
return(TRUE);
}
/*
* ======== dataIO ========
*
* FUNCTION: read input signal and write processed output signal.
*
* PARAMETERS: none.
*
* RETURN VALUE: none.
*/
static void dataIO()
{
/* do data I/O */
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -