mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2025-02-10 14:24:10 +00:00
change some bit masks to arrays
Originally committed as revision 9779 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
21d0a823b5
commit
878c40a137
@ -93,17 +93,17 @@ typedef struct {
|
||||
uint8_t surmixlev;
|
||||
uint8_t dsurmod;
|
||||
|
||||
uint8_t blksw;
|
||||
uint8_t dithflag;
|
||||
uint8_t blksw[AC3_MAX_CHANNELS];
|
||||
uint8_t dithflag[AC3_MAX_CHANNELS];
|
||||
uint8_t cplinu;
|
||||
uint8_t chincpl;
|
||||
uint8_t chincpl[AC3_MAX_CHANNELS];
|
||||
uint8_t phsflginu;
|
||||
uint8_t cplbegf;
|
||||
uint8_t cplendf;
|
||||
uint8_t cplcoe;
|
||||
uint32_t cplbndstrc;
|
||||
uint8_t rematstr;
|
||||
uint8_t rematflg;
|
||||
uint8_t rematflg[AC3_MAX_CHANNELS];
|
||||
uint8_t cplexpstr;
|
||||
uint8_t lfeexpstr;
|
||||
uint8_t chexpstr[5];
|
||||
@ -127,7 +127,7 @@ typedef struct {
|
||||
uint8_t cpldeltoffst[8];
|
||||
uint8_t cpldeltlen[8];
|
||||
uint8_t cpldeltba[8];
|
||||
uint8_t deltnseg[5];
|
||||
int deltnseg[5];
|
||||
uint8_t deltoffst[5][8];
|
||||
uint8_t deltlen[5][8];
|
||||
uint8_t deltba[5][8];
|
||||
@ -508,8 +508,8 @@ static int get_transform_coeffs_cpling(AC3DecodeContext *ctx, mant_groups *m)
|
||||
switch(tbap) {
|
||||
case 0:
|
||||
for (ch = 0; ch < ctx->nfchans; ch++)
|
||||
if (((ctx->chincpl) >> ch) & 1) {
|
||||
if ((ctx->dithflag >> ch) & 1) {
|
||||
if (ctx->chincpl[ch]) {
|
||||
if (ctx->dithflag[ch]) {
|
||||
cplcoeff = (av_random(&ctx->dith_state) & 0xFFFF) * scale_factors[exps[start]];
|
||||
ctx->transform_coeffs[ch + 1][start] = cplcoeff * cplcos[ch] * LEVEL_MINUS_3DB;
|
||||
} else
|
||||
@ -561,7 +561,7 @@ static int get_transform_coeffs_cpling(AC3DecodeContext *ctx, mant_groups *m)
|
||||
cplcoeff = (get_sbits(gb, qntztab[tbap]) << (16 - qntztab[tbap])) * scale_factors[exps[start]];
|
||||
}
|
||||
for (ch = 0; ch < ctx->nfchans; ch++)
|
||||
if ((ctx->chincpl >> ch) & 1)
|
||||
if (ctx->chincpl[ch])
|
||||
ctx->transform_coeffs[ch + 1][start] = cplcoeff * cplcos[ch];
|
||||
start++;
|
||||
}
|
||||
@ -584,7 +584,7 @@ static int get_transform_coeffs_ch(AC3DecodeContext *ctx, int ch_index, mant_gro
|
||||
factors[i] = scale_factors[i] * ctx->chcoeffs[ch_index];
|
||||
|
||||
if (ch_index != -1) { /* fbw channels */
|
||||
dithflag = (ctx->dithflag >> ch_index) & 1;
|
||||
dithflag = ctx->dithflag[ch_index];
|
||||
exps = ctx->dexps[ch_index];
|
||||
bap = ctx->bap[ch_index];
|
||||
coeffs = ctx->transform_coeffs[ch_index + 1];
|
||||
@ -678,7 +678,7 @@ static int get_transform_coeffs(AC3DecodeContext * ctx)
|
||||
if (get_transform_coeffs_ch(ctx, i, &m))
|
||||
return -1;
|
||||
/* tranform coefficients for coupling channels */
|
||||
if ((ctx->chincpl >> i) & 1) {
|
||||
if (ctx->chincpl[i]) {
|
||||
if (!got_cplchan) {
|
||||
if (get_transform_coeffs_cpling(ctx, &m)) {
|
||||
av_log(NULL, AV_LOG_ERROR, "error in decoupling channels\n");
|
||||
@ -725,21 +725,21 @@ static void do_rematrixing(AC3DecodeContext *ctx)
|
||||
|
||||
end = FFMIN(ctx->endmant[0], ctx->endmant[1]);
|
||||
|
||||
if (ctx->rematflg & 1)
|
||||
if (ctx->rematflg[0])
|
||||
do_rematrixing1(ctx, bnd1, bnd2);
|
||||
|
||||
if (ctx->rematflg & 2)
|
||||
if (ctx->rematflg[1])
|
||||
do_rematrixing1(ctx, bnd2, bnd3);
|
||||
|
||||
bndend = bnd4;
|
||||
if (bndend > end) {
|
||||
bndend = end;
|
||||
if (ctx->rematflg & 4)
|
||||
if (ctx->rematflg[2])
|
||||
do_rematrixing1(ctx, bnd3, bndend);
|
||||
} else {
|
||||
if (ctx->rematflg & 4)
|
||||
if (ctx->rematflg[2])
|
||||
do_rematrixing1(ctx, bnd3, bnd4);
|
||||
if (ctx->rematflg & 8)
|
||||
if (ctx->rematflg[3])
|
||||
do_rematrixing1(ctx, bnd4, end);
|
||||
}
|
||||
}
|
||||
@ -1287,7 +1287,7 @@ static inline void do_imdct(AC3DecodeContext *ctx)
|
||||
ctx->transform_coeffs[0], ctx->tmp_imdct);
|
||||
}
|
||||
for (ch=1; ch<=ctx->nfchans; ch++) {
|
||||
if ((ctx->blksw >> (ch-1)) & 1)
|
||||
if (ctx->blksw[ch-1])
|
||||
do_imdct_256(ctx, ch);
|
||||
else
|
||||
ctx->imdct_512.fft.imdct_calc(&ctx->imdct_512, ctx->tmp_output,
|
||||
@ -1317,13 +1317,11 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
int mstrcplco, cplcoexp, cplcomant;
|
||||
int dynrng, chbwcod, ngrps, cplabsexp, skipl;
|
||||
|
||||
ctx->blksw = 0;
|
||||
for (i = 0; i < nfchans; i++) /*block switch flag */
|
||||
ctx->blksw |= get_bits1(gb) << i;
|
||||
ctx->blksw[i] = get_bits1(gb);
|
||||
|
||||
ctx->dithflag = 0;
|
||||
for (i = 0; i < nfchans; i++) /* dithering flag */
|
||||
ctx->dithflag |= get_bits1(gb) << i;
|
||||
ctx->dithflag[i] = get_bits1(gb);
|
||||
|
||||
if (get_bits1(gb)) { /* dynamic range */
|
||||
dynrng = get_sbits(gb, 8);
|
||||
@ -1346,10 +1344,9 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
if (get_bits1(gb)) { /* coupling strategy */
|
||||
ctx->cplinu = get_bits1(gb);
|
||||
ctx->cplbndstrc = 0;
|
||||
ctx->chincpl = 0;
|
||||
if (ctx->cplinu) { /* coupling in use */
|
||||
for (i = 0; i < nfchans; i++)
|
||||
ctx->chincpl |= get_bits1(gb) << i;
|
||||
ctx->chincpl[i] = get_bits1(gb);
|
||||
|
||||
if (acmod == 0x02)
|
||||
ctx->phsflginu = get_bits1(gb); //phase flag in use
|
||||
@ -1370,6 +1367,9 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
ctx->cplbndstrc |= 1 << i;
|
||||
ctx->ncplbnd--;
|
||||
}
|
||||
} else {
|
||||
for (i = 0; i < nfchans; i++)
|
||||
ctx->chincpl[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1377,7 +1377,7 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
ctx->cplcoe = 0;
|
||||
|
||||
for (i = 0; i < nfchans; i++)
|
||||
if ((ctx->chincpl) >> i & 1)
|
||||
if (ctx->chincpl[i])
|
||||
if (get_bits1(gb)) { /* coupling co-ordinates */
|
||||
ctx->cplcoe |= 1 << i;
|
||||
mstrcplco = 3 * get_bits(gb, 2);
|
||||
@ -1401,17 +1401,15 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
if (acmod == 0x02) {/* rematrixing */
|
||||
ctx->rematstr = get_bits1(gb);
|
||||
if (ctx->rematstr) {
|
||||
ctx->rematflg = 0;
|
||||
|
||||
if (!(ctx->cplinu) || ctx->cplbegf > 2)
|
||||
for (rbnd = 0; rbnd < 4; rbnd++)
|
||||
ctx->rematflg |= get_bits1(gb) << rbnd;
|
||||
ctx->rematflg[rbnd] = get_bits1(gb);
|
||||
if (ctx->cplbegf > 0 && ctx->cplbegf <= 2 && ctx->cplinu)
|
||||
for (rbnd = 0; rbnd < 3; rbnd++)
|
||||
ctx->rematflg |= get_bits1(gb) << rbnd;
|
||||
ctx->rematflg[rbnd] = get_bits1(gb);
|
||||
if (ctx->cplbegf == 0 && ctx->cplinu)
|
||||
for (rbnd = 0; rbnd < 2; rbnd++)
|
||||
ctx->rematflg |= get_bits1(gb) << rbnd;
|
||||
ctx->rematflg[rbnd] = get_bits1(gb);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1426,7 +1424,7 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
|
||||
for (i = 0; i < nfchans; i++) /* channel bandwidth code */
|
||||
if (ctx->chexpstr[i] != EXP_REUSE) {
|
||||
if ((ctx->chincpl >> i) & 1)
|
||||
if (ctx->chincpl[i])
|
||||
ctx->endmant[i] = ctx->cplstrtmant;
|
||||
else {
|
||||
chbwcod = get_bits(gb, 6);
|
||||
@ -1550,7 +1548,7 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
ctx->bit_alloc_params.cplfleak = ctx->cplfleak;
|
||||
ctx->bit_alloc_params.cplsleak = ctx->cplsleak;
|
||||
|
||||
if (ctx->chincpl && (bit_alloc_flags & 64))
|
||||
if (ctx->cplinu && (bit_alloc_flags & 64))
|
||||
do_bit_allocation(ctx, 5);
|
||||
for (i = 0; i < nfchans; i++)
|
||||
if ((bit_alloc_flags >> i) & 1)
|
||||
@ -1573,7 +1571,7 @@ static int ac3_parse_audio_block(AC3DecodeContext *ctx, int blk)
|
||||
}
|
||||
|
||||
/* recover coefficients if rematrixing is in use */
|
||||
if (ctx->rematflg)
|
||||
if(ctx->acmod == AC3_ACMOD_STEREO)
|
||||
do_rematrixing(ctx);
|
||||
|
||||
do_downmix(ctx);
|
||||
|
Loading…
x
Reference in New Issue
Block a user