⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcm.h

📁 C语言编写的监控中心终端程序。基于GPRS上传收发数据功能
💻 H
字号:
#ifndef __PCM_H__
#define __PCM_H__

#include "auregs.h"

/*
 *	b0~b2 in RF_PCM_MODE
 */
#define	MODE_PCM		(0)
#define	MODE_KEYSHIFT		(1)
#define	MODE_ECHO		(2)		// small room
#define	MODE_DELAY		(3)		// delay
#define	MODE_MIX		(4)		// wide stereo

/*
 *	b3 in RF_PCM_MODE is the ECHO_FLAG.
 */
#define	MODE_ECHO_ON_FLAG	(0x08)
#define	MODE_FUDU_ON_FLAG	(0x10)

#if !defined(WIN32)
/*
 *	Functions with PCM_ or KS_ prefix do hardware control.
 */
static __inline int PCM_FIFO_count(void)
{
    int			cnt = RF_PCM_CNT;

    return cnt * 8;
}

static __inline int PCM_FIFO_free_space(const int pcm_fifo_size)
{
    return (pcm_fifo_size - PCM_FIFO_count());
}

/*
 *	sample_number has to be a multiple of 32
 */
static __inline void PCM_count_increment(unsigned int sample_number)
{
    while (sample_number > 0) {
	RF_PCM_COUNT_INC = 0;
	sample_number -= 8;
    }
}

static __inline void KS_set_resample_step(int step)
{
    RF_PCM_SF = step;		// 3.13
}

/*
 *	x, y : sign + 1.8 format
 */
static __inline void PCM_set_coef(int x, int y)
{
    while(RF_RAM2_WRT_DIS);
    AU_RAM2[R2_PCM_X] = x;
    while(RF_RAM2_WRT_DIS);
    AU_RAM2[R2_PCM_Y] = y;
}

static __inline void KS_cx_set_start(int cx_start, int next_pcm_index)	// input has to be multiple of 8
{
    RF_PCM_KEY_ADDR = next_pcm_index >> 3;
    RF_PCM_FRM_ADDR = cx_start >> 3;
}

static __inline void KS_cx_inc_count(int cx_offset)	// input has to be multiple of 8
{
    RF_PCM_KEY_OFFSET = cx_offset >> 3;
}

/*
 *	PCM volume register RF_PCM_AMP will not be set during ramp up/down.
 */
static __inline void PCM_set_volume(int v)
{
    RF_PCM_AMP = v;		// unsigned 1.8 format
}

static __inline void PCM_force_volume(int v)
{
    RF_PCM_RAMP_FN = 0;
    RF_PCM_AMP = v;		// unsigned 1.8 format
}

#endif	// !WIN32

void			select_Fs(int);
int			polling_pcm_energy(void);	// return 0 if silence detected.

#endif	// !__PCM_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -