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

📄 main.cpp

📁 TI公司DSP/tms320c55x/tms320c54x系列的声学回声消除代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			S16 amp = abs(rand()) % 7354;
			
			fill_rand(GaecDbC.asRbuf, GAEC_RBUF_SZ, amp);
			memcpy(GaecDbA.asRbuf, GaecDbC.asRbuf, GAEC_RBUF_SZ);
			
			GaecScC.sErleMax = 
			GaecScA.sErleMax = 
				(S16)((rand() *10000L)>>15);
			GaecDbC.sErleAv = 
			GaecDbA.sErleAv = 
				(S16)((rand() *10000L)>>15);
			GaecDbC.sErlAv = 
			GaecDbA.sErlAv = 
				(S16)((rand() *10000L)>>15);
			GaecDbC.sExpectedErrEn = 
			GaecDbA.sExpectedErrEn = 
				GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
			
			gaec_dtd_exp_errC(&GaecDbC, &GaecScC);
			gaec_dtd_exp_err (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 303)
	{
		int band;
		void gaec_dtd_exp_err_sbC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		
		fill_rand(&GaecDbC.aasRoutEnHst[0][0], 
			GAEC_ADF_FRS*(GAEC_BANDS+1), GAEC_DB(30));
		for (band = 0; band < (GAEC_BANDS+1); band++)
			for (k = 0; k < GAEC_ADF_FRS; k++)
				GaecDbC.aasRoutEnHst[band][k] -= GAEC_DB(45);		
		memcpy(GaecDbA.aasRoutEnHst, GaecDbC.aasRoutEnHst, 
			GAEC_ADF_FRS*(GAEC_BANDS+1));
		for (band = 0; band < GAEC_BANDS+1; band++)
		{
			GaecDbC.asExpectedErrEn[band] = 
			GaecDbA.asExpectedErrEn[band] = 
				GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
		}
		for (k = 0; k < 303; k++)
		{
			GaecScC.sErleMax = 
			GaecScA.sErleMax = 
				(S16)((rand() *10000L)>>15);
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecDbC.asErleAv[band] = 
				GaecDbA.asErleAv[band] = 
					(S16)((rand() *10000L)>>15);
				GaecDbC.asErlAv[band] = 
				GaecDbA.asErlAv[band] = 
					(S16)((rand() *10000L)>>15);
				GaecScC.asRcvEn[band] = 
				GaecScA.asRcvEn[band] = 
					GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
			}
			gaec_dtd_exp_err_sbC(&GaecDbC, &GaecScC);
			gaec_dtd_exp_err_sb (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 304)
	{
		void gaec_dtd_vad_errC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		
		GaecDbC.uAdfMode = GaecDbA.uAdfMode = 2;
		GaecDbC.sVadRxNse = GaecDbA.sVadRxNse = GAEC_DB(-60);
		GaecDbC.sVadRxCrit = GaecDbA.sVadRxCrit = GAEC_DB(-5);
		
		for (k = 0; k < 304; k++)
		{
			GaecScC.sErrEn = GaecScA.sErrEn = GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
			GaecScC.sSinEn = GaecScA.sSinEn = GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
			gaec_dtd_vad_errC(&GaecDbA, &GaecScA);
			gaec_dtd_vad_err (&GaecDbC, &GaecScC);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 305)
	{
		void gaec_dtd_vad_err_sbC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;
		
		GaecDbC.uAdfMode = GaecDbA.uAdfMode = 2;
		for (band = 0; band < GAEC_BANDS+1; band++)
		{
			GaecDbC.asVadRxNse[band] = GaecDbA.asVadRxNse[band] = GAEC_DB(-60);
			GaecDbC.asVadRxCrit[band] = GaecDbA.asVadRxCrit[band] = GAEC_DB(5);
		}
		
		for (k = 0; k < 3050; k++)
		{
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecScC.asErrEn[band] = GaecScA.asErrEn[band] = 
//					GAEC_DB(-55);
					GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
				GaecScC.asSndEn[band] = GaecScA.asSndEn[band] = 
//					GAEC_DB(-55);
					GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
			}
			gaec_dtd_vad_err_sbC(&GaecDbC, &GaecScC);
			gaec_dtd_vad_err_sb (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
//			asHstC[k] = GaecDbC.asVadCrit[5];
		}
	}
#elif (DBG_IT == 306)
	{
		void gaec_dtd_erleC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;
		
		for (k = 0; k < 306; k++)
		{
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecScC.asErrEn[band] = GaecScA.asErrEn[band] = 
//					GAEC_DB(-55-band);
					GAEC_DB(-100) + (S16)((rand() *10000L)>>15);
				GaecScC.asSndEn[band] = GaecScA.asSndEn[band] = 
//					GAEC_DB(-25-band);
					GAEC_DB(-70) + (S16)((rand() *10000L)>>15);
			}
			gaec_dtd_erleC(&GaecDbC, &GaecScC);
			gaec_dtd_erle (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 307)
	{
		void gaec_dtd_criteriaC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		
		GaecDbC.Cfg.sDtThr = GaecDbA.Cfg.sDtThr = GAEC_DB(3);
		GaecDbC.sDtCrit = GaecDbA.sDtCrit = GAEC_DB(5);
		GaecDbC.sErlCrit = GaecDbA.sErlCrit = GAEC_DB(5);
		
		for (k = 0; k < 307; k++)
		{
			GaecDbC.sExpectedErrEn = 
			GaecDbA.sExpectedErrEn = 
				GAEC_DB(-80) + (S16)((rand() *6000L)>>15);
			GaecScC.sErrEn = 
			GaecScA.sErrEn = 
				GAEC_DB(-55) + (S16)((rand() *6000L)>>15);
			GaecDbC.sVadRxNse = 
			GaecDbA.sVadRxNse = 
				GAEC_DB(-90) + (S16)((rand() *6000L)>>15);
				
			gaec_dtd_criteriaC(&GaecDbC, &GaecScC);
			gaec_dtd_criteria (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
			asHstC[k] = GaecDbC.sDtCrit;
		}
	}
#elif (DBG_IT == 308)
	{
		void gaec_dtd_criteria_sbC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;
		
		GaecDbC.Cfg.sDtThr = GaecDbA.Cfg.sDtThr = GAEC_DB(3);
		for (band = 0; band < GAEC_BANDS+1; band++)
		{
			GaecDbC.asDtCrit[band] = 
			GaecDbA.asDtCrit[band] = 
				GAEC_DB(0);
			GaecDbC.asErlCrit[band] = 
			GaecDbA.asErlCrit[band] = 
				GAEC_DB(0);
		}
		for (k = 0; k < 308; k++)
		{
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecDbC.asExpectedErrEn[band] = 
				GaecDbA.asExpectedErrEn[band] = 
//					GAEC_DB(-60);
					GAEC_DB(-80) + (S16)((rand() *(170*30L))>>15);
				GaecDbC.asVadRxNse[band] = 
				GaecDbA.asVadRxNse[band] =
//					GAEC_DB(-65);
					GAEC_DB(-80) + (S16)((rand() *(170*30L))>>15);
				GaecScC.asErrEn[band] = 
				GaecScA.asErrEn[band] = 
//					GAEC_DB(-55);
					GAEC_DB(-100) + (S16)((rand() *(170*70L))>>15);
			}
			GaecScC.sErleMax = 
			GaecScA.sErleMax = 
//					GAEC_DB(-55-band);
					GAEC_DB(5) + (S16)((rand() *(170*40L))>>15);
					
			gaec_dtd_criteria_sbC(&GaecDbC, &GaecScC);
			gaec_dtd_criteria_sb (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
			asHstC[k] = GaecDbC.asDtCrit[5];
		}
	}
#elif (DBG_IT == 309)
	{
		void gaec_dtd_dec_criteriaC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;
		
		GaecDbC.uIsDT = GaecDbA.uIsDT = 1;
		for (band = 0; band < GAEC_BANDS+1; band++)
		{
			GaecDbC.asDtCrit[band] = GaecDbA.asDtCrit[band] = 
				GAEC_DB((30-band/8));
		}
		GaecDbC.sDtCrit = GaecDbA.sDtCrit = 
			GAEC_DB(25);
		for (k = 0; k < 309; k++)
		{
			gaec_dtd_dec_criteriaC(&GaecDbC, &GaecScC);
			gaec_dtd_dec_criteria (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
			asHstC[k] = GaecDbC.asDtCrit[3];
		}
	}
#elif (DBG_IT == 310)
	{
		void gaec_dtd_avrg_erle_sbC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;
		
		GaecDbC.Cfg.sErlMin = GaecDbA.Cfg.sErlMin = GAEC_DB(8);
		for (band = 0; band < GAEC_BANDS+1; band++)
		{
			GaecDbC.asDtCrit[band] = 
			GaecDbA.asDtCrit[band] = 
				GAEC_DB(10.-band/4);
			GaecDbC.asErleAv[band] = 
			GaecDbA.asErleAv[band] = 
				GAEC_DB(15.+band/4);
			GaecDbC.asErlAv[band] = 
			GaecDbA.asErlAv[band] = 
				GAEC_DB(5.-band/2);
			GaecDbC.asVadRxNse[band] = 
			GaecDbA.asVadRxNse[band] = 
				GAEC_DB(-70-band);
		}
		GaecDbC.sDtCrit = 
		GaecDbA.sDtCrit = 
			GAEC_DB(1);
		GaecDbC.sErleAv = 
		GaecDbA.sErleAv = 
			0x1234;//GAEC_DB(-25);
		GaecDbC.sErlAv = 
		GaecDbA.sErlAv = 
			0x1235;//GAEC_DB(5);
		GaecDbC.sVadRxNse = 
		GaecDbA.sVadRxNse = 
			GAEC_DB(-65);
		for (k = 0; k < 310; k++)
		{
			GaecDbC.uAdfMode = 
			GaecDbA.uAdfMode = 
				rand() % 5;
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecScC.asRcvEn[band] = 
				GaecScA.asRcvEn[band] = 
//					GAEC_DB(-15-band);
					GAEC_DB(-40) + (S16)((rand() *(170*80L))>>15);
				GaecScC.asSndEn[band] = 
				GaecScA.asSndEn[band] = 
//					GAEC_DB(-45-band);
					GAEC_DB(-50) + (S16)((rand() *(170*80L))>>15);
				GaecScC.asErle[band] = GaecScA.asErle[band] = 
//					GAEC_DB(35-band);
					GAEC_DB(-10) + (S16)((rand() *(170*20L))>>15);
				GaecScC.asErl[band] = GaecScA.asErl[band] = 
//					GAEC_DB(5+band);
					GAEC_DB(-5) + (S16)((rand() *(170*20L))>>15);
				
			}
			GaecScC.sSinEn = GaecScA.sSinEn = 
//				GAEC_DB(-45);
				GAEC_DB(-90) + (S16)((rand() *(170*80L))>>15);
			GaecScC.sErle = GaecScA.sErle = 
//				GAEC_DB(35);
				GAEC_DB(-10) + (S16)((rand() *(170*20L))>>15);
			GaecScC.sErl = GaecScA.sErl = 
//				GAEC_DB(5);
				GAEC_DB(-5) + (S16)((rand() *(170*20L))>>15);
				
			gaec_dtd_avrg_erle_sbC(&GaecDbC, &GaecScC);
			gaec_dtd_avrg_erle_sb (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
			asHstC[k] = GaecDbC.sErleAv;
		}
	}
#elif (DBG_IT == 401)
	{
		void gaec_nlp_add_noise (S16 *psSeed,S16 *psTo,S16 sLevel);
		void gaec_nlp_add_noiseC(S16 *psSeed,S16 *psTo,S16 sLevel);
		
		for (k = 0; k < GAEC_ERR_SZ; k++)
		{
			asRxC[k] = asRxA[k] = 0;
		}
		for (k = 0; k < 1401; k++)
		{
			S16 sLevel = rand() & 4095;
			sC = sA = rand();
			gaec_nlp_add_noiseC((S16 *)&sC, asRxC, sLevel);
			gaec_nlp_add_noise ((S16 *)&sA, asRxA, sLevel);
//			sErr += compare_sc();
//			sErr += compare_db();
			if (sC != sA) sErr++;
			sErr += compare(asRxC, asRxA, GAEC_ERR_SZ);
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 402)
	{
		void gaec_nlp_mix_noiseC(GAEC_tDb *pDb,GAEC_tSc *pSc, U16 uUseDtCrit);
		int band;

		GaecDbC.uControl =
		GaecDbA.uControl = 
			0;
//			IGAEC_CMD_NSE_RED_OFF;
		GaecDbC.sNseSav = 
		GaecDbA.sNseSav = 
			rand();
		for (k = 0; k < 402; k++)
		{
			U16 uUseDtCrit = rand() & 1;
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecDbC.asVadRxNse[band] = GaecDbA.asVadRxNse[band] = 
//					GAEC_DB(5+band);
					GAEC_DB(-60) + (S16)((rand() *(170*40L))>>15);
				GaecScC.asAttRx[band] = GaecScA.asAttRx[band] = 
					rand() & 4095;
				
			}
				
			gaec_nlp_mix_noiseC(&GaecDbC, &GaecScC, uUseDtCrit);
			gaec_nlp_mix_noise (&GaecDbA, &GaecScA, uUseDtCrit);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 403)
	{
		void gaec_nlp_att_rxC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;

		for (k = 0; k < 403; k++)
		{
			fill_rand(&GaecDbC.aasErrSav[0][0], GAEC_ERR_SZ*2*GAEC_BANDS, 8400);
//			memset(GaecDbC.aasErrSav, 256, GAEC_ERR_SZ*2*GAEC_BANDS);
			
			memcpy(GaecDbA.aasErrSav, GaecDbC.aasErrSav, GAEC_ERR_SZ*2*GAEC_BANDS);
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecScC.asAttRx[band] = 
				GaecScA.asAttRx[band] = 
					rand() & 4095;
			}
				
			gaec_nlp_att_rxC(&GaecDbC, &GaecScC);
			gaec_nlp_att_rx (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);
//				sErr = 0;
			}
		}
	}
#elif (DBG_IT == 404)
	{
		void gaec_nr_nrgC(GAEC_tDb *pDb,GAEC_tSc *pSc);
		int band;

		for (k = 0; k < 404; k++)
		{
			for (band = 0; band < GAEC_BANDS+1; band++)
			{
				GaecScC.asErrEn[band] = 
				GaecScA.asErrEn[band] = 
					GAEC_DB(-70) + (S16)((rand() *(170*70L))>>15);
				GaecDbC.asVadRxNse[band] =
				GaecDbA.asVadRxNse[band] =
					GAEC_DB(-70) + (S16)((rand() *(170*40L))>>15);
				GaecDbC.aslNrPrior[band] = 
				GaecDbA.aslNrPrior[band] = 
					labs(rand() * (S32) rand()) >> 25;
			}
				
			gaec_nr_nrgC(&GaecDbC, &GaecScC);
			gaec_nr_nrg (&GaecDbA, &GaecScA);
			sErr += compare_sc();
			sErr += compare_db();
			if (sErr)
			{
				sTrap = gaec_utl_en2log(sErr);

⌨️ 快捷键说明

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