예제 #1
0
void InitialAC3()
{
	error_flag = buffer_size = 0;
	ZeroMemory(&syncinfo, sizeof(syncinfo));
	ZeroMemory(&bsi, sizeof(bsi));
	ZeroMemory(&audblk, sizeof(audblk));

	drc_init();
	imdct_init();
	exponent_init();
	mantissa_init();

	srand(0);
}
예제 #2
0
파일: iep_drc.c 프로젝트: Aorjoa/bootloader
//en : 0-close when vbi
//en : 1- open when vbi
//en : 2-close immediately
__s32 drc_enable(__u32 sel, __u32 en)
{
	switch(en) {
	case 0:
		if(g_iep_status[sel] & DRC_USED) {
			g_iep_status[sel] |= DRC_NEED_CLOSED;
		}	else {
			DE_INF("[iep_drc.c]DRC hasn't opened yet !\n");
		}
		break;

	case 1:
		if(g_iep_status[sel] & DRC_REQUIRED) {
			//if((gdisp.screen[sel].output_type == DISP_OUTPUT_TYPE_LCD) && (gdisp.screen[sel].status & LCD_ON))
			//{
			if(!(g_iep_status[sel] & DRC_USED)) {
				drc_init(sel);
				g_iep_status[sel] |= DRC_USED;
				DE_INF("[iep_drc.c]DRC open now!\n");
			}	else {
				DE_INF("[iep_drc.c]DRC has already opened before !\n");
			}
			//}
			//else
			//{
			//  DE_INF("[iep_drc.c]Will OPEN DRC when output to LCD !\n");
			//}
		}	else {
			DE_INF("[iep_drc.c]Run DISP_CMD_DRC_ON will open DRC !\n");
		}
		break;

	case 2:
		if(g_iep_status[sel] & DRC_USED) {
			drc_close_proc(sel);
		}	else {
			DE_INF("[iep_drc.c]DRC hasn't opened yet !\n");
		}
		break;

	}
	return DIS_SUCCESS;
}
예제 #3
0
static void drc_run(struct dsp_module *module, unsigned long sample_count)
{
	struct drc_data *data = (struct drc_data *) module->data;
	if (!data->drc) {
		int i;
		float nyquist = data->sample_rate / 2;
		struct drc *drc = drc_new(data->sample_rate);

		data->drc = drc;
		drc->emphasis_disabled = (int) *data->ports[4];
		for (i = 0; i < 3; i++) {
			int k = 5 + i * 8;
			float f = *data->ports[k];
			float enable = *data->ports[k+1];
			float threshold = *data->ports[k+2];
			float knee = *data->ports[k+3];
			float ratio = *data->ports[k+4];
			float attack = *data->ports[k+5];
			float release = *data->ports[k+6];
			float boost = *data->ports[k+7];
			drc_set_param(drc, i, PARAM_CROSSOVER_LOWER_FREQ,
				      f / nyquist);
			drc_set_param(drc, i, PARAM_ENABLED, enable);
			drc_set_param(drc, i, PARAM_THRESHOLD, threshold);
			drc_set_param(drc, i, PARAM_KNEE, knee);
			drc_set_param(drc, i, PARAM_RATIO, ratio);
			drc_set_param(drc, i, PARAM_ATTACK, attack);
			drc_set_param(drc, i, PARAM_RELEASE, release);
			drc_set_param(drc, i, PARAM_POST_GAIN, boost);
		}
		drc_init(drc);
	}
	if (data->ports[0] != data->ports[2])
		memcpy(data->ports[2], data->ports[0],
		       sizeof(float) * sample_count);
	if (data->ports[1] != data->ports[3])
		memcpy(data->ports[3], data->ports[1],
		       sizeof(float) * sample_count);

	drc_process(data->drc, &data->ports[2], (int) sample_count);
}