📄 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_7ch
void 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_7ch
void 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 + -