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

📄 dyn_cross.c

📁 ISO mp3 sources (distribution 10) Layer 1/2/3, C Source, 512 k Sources of the Mpeg 1,2 layer 1,2
💻 C
📖 第 1 页 / 共 4 页
字号:
		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		T3outof[sbgr] = L0;		T4outof[sbgr] = R0;		break;	  case 4:		T2[sbgr] = C; T3[sbgr] = LS; T4[sbgr] = R;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		T3outof[sbgr] = L0;		T4outof[sbgr] = R0;		break;	  case 5:		T2[sbgr] = C; T3[sbgr] = L; T4[sbgr] = R;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		T3outof[sbgr] = L0;		T4outof[sbgr] = R0;		break;	  case 6:		T2[sbgr] = R; T3[sbgr] = L; T4[sbgr] = RS;		T2outof[sbgr] = R0;		T3outof[sbgr] = L0;		T4outof[sbgr] = R0;		break;	  case 7:		T2[sbgr] = L; T3[sbgr] = LS; T4[sbgr] = R;		T2outof[sbgr] = L0;		T3outof[sbgr] = L0;		T4outof[sbgr] = R0;		break;	    }	/* switch() */	}	else if (fr_ps->config == 310)	{	    /* 3/1 */	    switch(fr_ps->header->tc_alloc[sbgr]) {	  case 0:		T2[sbgr] = 2;		T3[sbgr] = 3;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = T3outof[sbgr] = L0;		else		    T2outof[sbgr] = T3outof[sbgr] = R0;		break;	  case 1:		T2[sbgr] = L;		T3[sbgr] = 3;		T2outof[sbgr] = L0;		if(fr_ps->header->dyn_cross_LR == 0)		    T3outof[sbgr] = L0;		else		    T3outof[sbgr] = R0;		break;	  case 2:		T2[sbgr] = R;		T3[sbgr] = 3;		T2outof[sbgr] = R0;		if(fr_ps->header->dyn_cross_LR == 0)		    T3outof[sbgr] = L0;		else		    T3outof[sbgr] = R0;		break;	  case 3:		T2[sbgr] = 2;		T3[sbgr] = L;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		T3outof[sbgr] = L0;		break;	  case 4:		T2[sbgr] = 2;		T3[sbgr] = R;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		T3outof[sbgr] = R0;		break;	  case 5:		T2[sbgr] = L;		T3[sbgr] = R;		T2outof[sbgr] = L0;		T3outof[sbgr] = R0;		break;	    }	/* switch() */	}	else if (fr_ps->config == 220)	{	    /* 2/2 */	    switch(fr_ps->header->tc_alloc[sbgr]) {	  case 0:		T2[sbgr] = 2; T3[sbgr] = 3;		break;	  case 1:		T2[sbgr] = L; T3[sbgr] = 3;		break;	  case 2:		T2[sbgr] = 2; T3[sbgr] = R;		break;	  case 3:		T2[sbgr] = L; T3[sbgr] = R;		break;	    }	/* switch() */	    T2outof[sbgr] = L0;	    T3outof[sbgr] = R0;	}	else if (fr_ps->config == 300 || fr_ps->config == 302)	{	    /* 3/0 (+ 2/0) */	    switch(fr_ps->header->tc_alloc[sbgr]) {	  case 0:		T2[sbgr] = 2;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		break;	  case 1:		T2[sbgr] = L;		T2outof[sbgr] = L0;		break;	  case 2:		T2[sbgr] = R;		T2outof[sbgr] = R0;		break;	    }	/* switch() */	}	else if (fr_ps->config == 210)	{	    /* 2/1 */	    switch(fr_ps->header->tc_alloc[sbgr]) {	  case 0:		T2[sbgr] = 2;		if(fr_ps->header->dyn_cross_LR == 0)		    T2outof[sbgr] = L0;		else		    T2outof[sbgr] = R0;		break;	  case 1:		T2[sbgr] = L;		T2outof[sbgr] = L0;		break;	  case 2:		T2[sbgr] = R;		T2outof[sbgr] = R0;		break;	    }	/* switch() */	}	if (fr_ps->config == 302)	{	    /* 3/0 + 2/0 */	    T3[sbgr] = 3; 	    T4[sbgr] = 4; 	    T4outof[sbgr] = 3;	}	else if (fr_ps->config == 202)	{	    /* 2/0 + 2/0 */	    T2[sbgr] = 2; 	    T3[sbgr] = 3; 	    T3outof[sbgr] = 2;	}	else if (fr_ps->config == 102)	{	    /* 1/0 + 2/0 */	    T2[sbgr] = 2; 	    T2outof[sbgr] = 1;	}    }	/* for(sbgr.. */}#ifdef Augmentation_7chvoid trans_chan_aug (frame_params *fr_ps) 		    	    /* in:  int	fr_ps->header->tc_alloc[SBGRS],     	     *	    int	fr_ps->numchan,	    	     *	    int	fr_ps->header->matrix,	    0 normal -, 3 no matricing 	     *	    int fr_ps->header->dyn_cross_LR  0 out of L0, 1 out of R0	     */			    /*  global parameters *  out:    T2[SBGRS], T3[SBGRS], T4[SBGRS], T2outof[SBGRS], T3outof[SBGRS], T4outof[SBGRS] */{      int sbgr;    for (sbgr = 0; sbgr < SBGRS; sbgr++)    {	/* 5/2 */	switch (fr_ps->header->aug_tc_alloc[sbgr])	{	case 0:	      T5[sbgr] = LC;	      T6[sbgr] = RC;	      break;	case 1:	      T5[sbgr] = L7;	      T6[sbgr] = RC;	      break;	case 2:	      T5[sbgr] = LC;	      T6[sbgr] = R7;	      break;	case 3:	      T5[sbgr] = L7;	      T6[sbgr] = R7;	      break;	case 4:	      T5[sbgr] = LC;	      T6[sbgr] = C7;	      break;	case 5:	      T5[sbgr] = L7;	      T6[sbgr] = C7;	      break;	case 6:	      T5[sbgr] = C7;	      T6[sbgr] = RC;	      break;	case 7:	      T5[sbgr] = C7;	      T6[sbgr] = R7;	      break;	}	/* switch() */    }}#endif/************************************************************************ * * combine * * Version 1.0	    94/06/27	Andreas Silzle, IRT * * Add two channels into a mono channel to use it in dynamic crosstalk. * ************************************************************************/void combine ( 	frame_params	*fr_ps, 		    	    /* in:  int	fr_ps->header->tc_alloc[SBGRS], 	     *	    int fr_ps->sblimit,				     */	double	sb_sample[CHANMAX3][3][SCALE_BLOCK][SBLIMIT],	/* in */	double	sb_sample_sum[5][3][SCALE_BLOCK][SBLIMIT]) 			    /* out; T23, T24, T34, T234, T56 */{  /*  global parameters *  in:	T2[SBGRS], T3[SBGRS], T4[SBGRS] *      sb_groups[SBGRS] */    int sb, sbgr, smp, sufr;    for (sbgr=0; sbgr < SBGRS; sbgr++)    {	for (sb = ((sbgr==0) ? 0:(sb_groups[sbgr-1]+1)); 		sb <= sb_groups[sbgr]; sb++)	{	    for (smp = 0; smp < SCALE_BLOCK; smp++)	    {		for (sufr = 0; sufr < 3; ++sufr)		{		    if (fr_ps->config == 320 || fr_ps->config == 310 || fr_ps->config == 220 || fr_ps->config == 202)			sb_sample_sum[T23][sufr][smp][sb] = 			    .5 * (sb_sample[T2[sbgr]][sufr][smp][sb]				+ sb_sample[T3[sbgr]][sufr][smp][sb]);		    else if (fr_ps->config == 102)			sb_sample_sum[T23][sufr][smp][sb] = 			    .5 * (sb_sample[1       ][sufr][smp][sb]				+ sb_sample[T2[sbgr]][sufr][smp][sb]);		    else if (fr_ps->config == 302)			sb_sample_sum[T23][sufr][smp][sb] = 			    .5 * (sb_sample[T3[sbgr]][sufr][smp][sb]				+ sb_sample[T4[sbgr]][sufr][smp][sb]);		    if (fr_ps->config == 320)		    {			sb_sample_sum[T24][sufr][smp][sb] = 			    .5 * (sb_sample[T2[sbgr]][sufr][smp][sb]				+ sb_sample[T4[sbgr]][sufr][smp][sb]);			sb_sample_sum[T34][sufr][smp][sb] = 			    .5 * (sb_sample[T3[sbgr]][sufr][smp][sb]				+ sb_sample[T4[sbgr]][sufr][smp][sb]);			sb_sample_sum[T234][sufr][smp][sb] = 			    .333333 * (sb_sample[T2[sbgr]][sufr][smp][sb]				+ sb_sample[T3[sbgr]][sufr][smp][sb]				+ sb_sample[T4[sbgr]][sufr][smp][sb]);		    }		}   /* for(sufr.. */	    }	    /* for(smp.. */	}	    /* for(sb.. */    }		    /* for(sbgr.. */	}#ifdef Augmentation_7chvoid combine_aug ( 	frame_params	*fr_ps, 		    	    /* in:  int	fr_ps->header->tc_alloc[SBGRS], 	     *	    int fr_ps->sblimit,				     */	double	sb_sample[CHANMAX3][3][SCALE_BLOCK][SBLIMIT],	/* in */	double	sb_sample_sum[5][3][SCALE_BLOCK][SBLIMIT]) 			    /* out; T23, T24, T34, T234, T56 */{  /*  global parameters *  in:	T2[SBGRS], T3[SBGRS], T4[SBGRS] *      sb_groups[SBGRS] */    int sb, sbgr, smp, sufr;    for (sbgr = 0; sbgr < SBGRS; sbgr++)    {	for (sb = ((sbgr==0) ? 0:(sb_groups[sbgr-1]+1)); 		sb <= sb_groups[sbgr]; sb++)	{	    for (smp = 0; smp < SCALE_BLOCK; smp++)	    {		for (sufr = 0; sufr < 3; ++sufr)		{		    sb_sample_sum[T56][sufr][smp][sb] = 			.5 * (sb_sample[T5[sbgr]][sufr][smp][sb]			    + sb_sample[T6[sbgr]][sufr][smp][sb]);		}   /* for (sufr.. */	    }	    /* for (smp.. */	}	    /* for (sb.. */    }		    /* for (sbgr.. */	}#endif/**************************************************************************** * *  void dyn_bal * *  Add the bits for scf and scfsi of the channel with dynamic crosstalk *  in the case of min_ch is L0 and R0. * *  07/94	Susanne Ritscher *  94/10/28	Andreas Silzle	    little remake * *****************************************************************************/void dyn_bal (	unsigned int	scfsi[CHANMAX3][SBLIMIT],   /* in */ 	int		sbgr,			    /* in */	frame_params	*fr_ps,	    /* in:  fr_ps->header->dyn_cross[sbgr] */	int		min_ch,			    /* in */	int		min_sb,			    /* in */	int		*seli,			    /* in, out */	int		*scale)			    /* in, out */{/*  global parameters *  in:	T2[SBGRS], T3[SBGRS], T4[SBGRS], T2outof[SBGRS], T3outof[SBGRS], T4outof[SBGRS] */    static int	sfsPerScfsi[] = { 3,2,1,2 };    /* lookup # sfs per scfsi */    layer *info  = fr_ps->header;    int center   = info->center;    int surround = info->surround;    /* 960627 FdB DynX dependent on configuration */    if (fr_ps->config == 320)    {	/* 3/2 */	switch (fr_ps->header->dyn_cross[sbgr]) {      case 0:		    break;	    /* no additional scf and scfsi */      case 1:  	    if (min_ch == R0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]];	    }	    break;      case 2:  	    if (min_ch == L0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]];	    }	    break;      case 3: 	    if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]];	    }	    break;      case 4: 	    if (min_ch == L0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]];	    }	    if (min_ch == R0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]];	    }	    break;      case 5:  	    if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]];	    }	    if (min_ch == R0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]];	    }	    break;      case 6: 	    if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]];	    }	    if (min_ch == L0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]];	    }	    break;      case 7: 	    if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]];	    }	    if (min_ch == L0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]];	    }	    if (min_ch == R0) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]];	    }	    break;      case 8:	    if (min_ch == T3[sbgr]) {		*seli += 2;		*scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]];

⌨️ 快捷键说明

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