📄 dyn_cross.c
字号:
} break; case 9: if (min_ch == T2[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; } break; case 10: if (min_ch == T2[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]]; } break; case 11: if (min_ch == T2[sbgr]) { *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 12: if (min_ch == T2[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]]; } if (min_ch == L0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; } break; case 13: if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]]; } if (min_ch == T3[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]]; } break; case 14: if (min_ch == T2[sbgr]) { *seli += 4; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; *scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]]; } break; case 15: fprintf(stderr, "FORBIDDEN DYN_CROSS!!!!!\n"); fflush(stderr); exit(0); break; } /* switch.. */ } else if (fr_ps->config == 310 || fr_ps->config == 220) { /* 3/1 and 2/2 */ switch (fr_ps->header->dyn_cross[sbgr]) { case 0: break; /* no additional scf and scfsi */ case 1: if (min_ch == T3outof[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; } break; case 2: if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T2[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]]; } if (min_ch == T3outof[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; } break; case 4: if (min_ch == T2[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; } break; default: fprintf(stderr, "FORBIDDEN DYN_CROSS!!!!!\n"); fflush(stderr); exit(0); break; } /* switch.. */ } else if (fr_ps->config == 300 || fr_ps->config == 302 || fr_ps->config == 210) { /* 3/0 (+2/0) and 2/1 */ switch(fr_ps->header->dyn_cross[sbgr]) { case 0: break; /* no additional scf and scfsi */ case 1: if (min_ch == T2outof[sbgr] && (center != 3 || sbgr < 10)) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]]; } break; default: fprintf(stderr, "FORBIDDEN DYN_CROSS!!!!!\n"); fflush(stderr); exit(0); break; } /* switch.. */ if (fr_ps->config == 302 && info->dyn_second_stereo[sbgr] && min_ch == T4outof[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T4[sbgr]][min_sb]]; } } else if (fr_ps->config == 202 && info->dyn_second_stereo[sbgr] && min_ch == T3outof[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T3[sbgr]][min_sb]]; } else if (fr_ps->config == 102 && info->dyn_second_stereo[sbgr] && min_ch == T2outof[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T2[sbgr]][min_sb]]; }}#ifdef Augmentation_7chvoid dyn_bal_aug ( 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], T5[SBGRS] */ static int sfsPerScfsi[] = { 3,2,1,2 }; /* lookup # sfs per scfsi */ int dynx_T2 = !dyn_ch (fr_ps, sbgr, 2); int dynx_T3 = !dyn_ch (fr_ps, sbgr, 3); int dynx_T4 = !dyn_ch (fr_ps, sbgr, 4); int T5T0 = L0, T6T0 = L0, T6T1 = R0; if (fr_ps->header->aug_tc_alloc[sbgr] == 4 || fr_ps->header->aug_tc_alloc[sbgr] == 5) if (fr_ps->header->dyn_cross_LR == 0) T6T1 = L0; else T6T0 = R0; else if (fr_ps->header->aug_tc_alloc[sbgr] == 6 || fr_ps->header->aug_tc_alloc[sbgr] == 7) if (fr_ps->header->dyn_cross_LR) T5T0 = R0; /* 5/2 */ switch (fr_ps->header->aug_dyn_cross[sbgr]) { case 0: break; /* no additional scf and scfsi */ case 1: if (min_ch == T6T1) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 2: if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 3: if (min_ch == T4[sbgr] || (dynx_T4 && min_ch == T4from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 4: if (min_ch == T5[sbgr]) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 5: if (min_ch == T5T0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } break; case 6: if (min_ch == T5T0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } else if (min_ch == T6T1) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 7: if (min_ch == T5T0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 8: if (min_ch == T5T0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T4[sbgr] || (dynx_T4 && min_ch == T4from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 9: if (min_ch == T5T0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T6T0) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 10: if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } break; case 11: if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T6T1) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 12: if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 4; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 13: if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T4[sbgr] || (dynx_T4 && min_ch == T4from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 14: if (min_ch == T3[sbgr] || (dynx_T3 && min_ch == T3from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } break; case 15: if (min_ch == T3[sbgr] || (dynx_T3 && min_ch == T3from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T6T1) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 16: if (min_ch == T3[sbgr] || (dynx_T3 && min_ch == T3from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T2[sbgr] || (dynx_T2 && min_ch == T2from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 17: if (min_ch == T3[sbgr] || (dynx_T3 && min_ch == T3from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; } if (min_ch == T4[sbgr] || (dynx_T4 && min_ch == T4from[sbgr])) { *seli += 2; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; case 18: if (min_ch == T3[sbgr] || (dynx_T3 && min_ch == T3from[sbgr])) { *seli += 4; *scale += 6 * sfsPerScfsi[scfsi[T5[sbgr]][min_sb]]; *scale += 6 * sfsPerScfsi[scfsi[T6[sbgr]][min_sb]]; } break; default: fprintf (stderr, "FORBIDDEN AUG_DYN_CROSS!!!!!\n"); fflush (stderr); exit (1); break; }}#endif/**************************************************************************** * * void choose_dyn * * bit_alloc of the dynamic crosstalk channels must be have a value; * only for sending scf in datastream. * * 07/94 Susanne Ritscher * 94/10/31 Andreas Silzle little remake * 94/12/30 Andreas Silzle * fill only up to that subband of the basic channel * which is unequal zero. * *****************************************************************************/void choose_dyn ( frame_params *fr_ps, /* in: fr_ps->header->dyn_cross[sbgr] * fr_ps->alloc */ int min_ch, /* in */ int min_sb, /* in */ int sbgr, /* in */ unsigned int bit_alloc[CHANMAX3][SBLIMIT]) /* out */{/* global parameters * in: T2[SBGRS], T3[SBGRS], T4[SBGRS], T2outof[SBGRS] */ 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; case 1: if(min_ch == R0 && bit_alloc[R0][min_sb] != 0) bit_alloc[T4[sbgr]][min_sb] = 1; break; case 2: if(min_ch == L0 && bit_alloc[L0][min_sb] != 0) bit_alloc[T3[sbgr]][min_sb] = 1; break; case 3: if(min_ch == T2outof[sbgr] && bit_alloc[T2outof[sbgr]][min_sb] != 0) bit_alloc[T2[sbgr]][min_sb] = 1; break; case 4: if(min_ch == R0 && bit_alloc[R0][min_sb] != 0) bit_alloc[T4[sbgr]][min_sb] = 1; if(min_ch == L0 && bit_alloc[L0][min_sb] != 0) bit_alloc[T3[sbgr]][min_sb] = 1; break; case 5: if(min_ch == T2outof[sbgr] && bit_alloc[T2outof[sbgr]][min_sb] != 0) bit_alloc[T2[sbgr]][min_sb] = 1; if(min_ch == R0 && bit_alloc[R0][min_sb] != 0) bit_alloc[T4[sbgr]][min_sb] = 1; break; case 6: if(min_ch == T2outof[sbgr] && bit_alloc[T2outof[sbgr]][min_sb] != 0) bit_alloc[T2[sbgr]][min_sb] = 1; if(min_ch == L0 && bit_alloc[L0][min_sb] != 0) bit_alloc[T3[sbgr]][min_sb] = 1; break; case 7: if(min_ch == T2outof[sbgr] && bit_alloc[T2outof[sbgr]][min_sb] != 0) bit_alloc[T2[sbgr]][min_sb] = 1; if(min_ch == L0 && bit_alloc[L0][min_sb] != 0) bit_alloc[T3[sbgr]][min_sb] = 1; if(min_ch == R0 && bit_alloc[R0][min_sb] != 0) bit_alloc[T4[sbgr]][min_sb] = 1; break; case 8: if(min_ch == T3[sbgr] && bit_alloc[T3[sbgr]][min_sb] != 0) bit_alloc[T4[sbgr]][min_sb] = 1; break; case 9: if(min_ch == T2[sbgr] && bit_alloc[T2[sbgr]][min_sb] != 0) bit_alloc[T3[sbgr]][min_sb] = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -