📄 dyn_cross.c
字号:
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 + -