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

📄 pcm.h

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 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)

//#define _mic_volume     256 // unity gain of MIC volume

#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 f);
int     polling_pcm_energy(void);	// return 0 if silence detected.

#endif //!__PCM_H__

⌨️ 快捷键说明

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