Lines Matching defs:block
331 /* set coupling use flags for each block/channel */
334 AC3Block *block = &s->blocks[blk];
336 block->channel_in_cpl[ch] = s->cpl_on;
339 /* enable coupling for each block if at least 2 channels have coupling
340 enabled for that block */
344 AC3Block *block = &s->blocks[blk];
345 block->num_cpl_channels = 0;
347 block->num_cpl_channels += block->channel_in_cpl[ch];
348 block->cpl_in_use = block->num_cpl_channels > 1;
349 num_cpl_blocks += block->cpl_in_use;
350 if (!block->cpl_in_use) {
351 block->num_cpl_channels = 0;
353 block->channel_in_cpl[ch] = 0;
356 block->new_cpl_strategy = !blk;
359 if (block->channel_in_cpl[ch] != s->blocks[blk-1].channel_in_cpl[ch]) {
360 block->new_cpl_strategy = 1;
365 block->new_cpl_leak = block->new_cpl_strategy;
367 if (!blk || (block->cpl_in_use && !got_cpl_snr)) {
368 block->new_snr_offsets = 1;
369 if (block->cpl_in_use)
372 block->new_snr_offsets = 0;
380 AC3Block *block = &s->blocks[blk];
382 if (block->channel_in_cpl[ch])
383 block->end_freq[ch] = s->start_freq[CPL_CH];
385 block->end_freq[ch] = s->bandwidth_code * 3 + 73;
407 AC3Block *block = &s->blocks[blk];
408 if (block->new_rematrixing_strategy)
409 flags = block->rematrixing_flags;
410 nb_coefs = FFMIN(block->end_freq[1], block->end_freq[2]);
411 for (bnd = 0; bnd < block->num_rematrixing_bands; bnd++) {
416 int32_t lt = block->fixed_coef[1][i];
417 int32_t rt = block->fixed_coef[2][i];
418 block->fixed_coef[1][i] = (lt + rt) >> 1;
419 block->fixed_coef[2][i] = (lt - rt) >> 1;
453 AC3Block *block = &s->blocks[0];
455 s->ac3dsp.extract_exponents(block->exp[ch], block->fixed_coef[ch], chan_size);
466 * Table used to select exponent strategy based on exponent reuse block interval.
540 * @param[in,out] exp array of exponents for 1 block in 1 channel
542 * @param exp_strategy exponent strategy for the block
543 * @param cpl indicates if the block is in the coupling channel
631 AC3Block *block = &s->blocks[blk];
632 if (cpl && !block->cpl_in_use) {
637 nb_coefs = block->end_freq[ch] - s->start_freq[ch];
640 /* count the number of EXP_REUSE blocks after the current block
641 and set exponent reference block numbers */
660 /* reference block numbers have been changed, so reset ref_bap_set */
675 AC3Block *block = &s->blocks[blk];
676 for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
679 int nb_coefs = block->end_freq[ch] - s->start_freq[ch];
709 AC3Block *block = &s->blocks[blk];
710 for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
716 nb_groups = exponent_group_tab[cpl][exp_strategy-1][block->end_freq[ch]-s->start_freq[ch]];
717 p = block->exp[ch] + s->start_freq[ch] - cpl;
721 block->grouped_exp[ch][0] = exp1;
744 block->grouped_exp[ch][i] = ((delta0 * 5 + delta1) * 5) + delta2;
816 /* block start info */
827 /* block switch flags */
955 AC3Block *block = &s->blocks[blk];
957 if (block->new_cpl_strategy)
983 AC3Block *block = &s->blocks[blk];
986 if (block->new_cpl_strategy) {
989 if (block->cpl_in_use) {
1005 if (block->cpl_in_use) {
1007 if (block->channel_in_cpl[ch]) {
1008 if (!s->eac3 || block->new_cpl_coords[ch] != 2)
1010 if (block->new_cpl_coords[ch]) {
1023 frame_bits += block->num_rematrixing_bands;
1029 if (!block->channel_in_cpl[ch])
1036 if (!s->eac3 && block->cpl_in_use)
1041 if (block->new_snr_offsets)
1042 frame_bits += 6 + (s->channels + block->cpl_in_use) * (4 + 3);
1046 if (block->cpl_in_use) {
1047 if (!s->eac3 || block->new_cpl_leak != 2)
1049 if (block->new_cpl_leak)
1067 AC3Block *block = &s->blocks[blk];
1068 for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
1073 ff_ac3_bit_alloc_calc_psd(block->exp[ch], s->start_freq[ch],
1074 block->end_freq[ch], block->psd[ch],
1075 block->band_psd[ch]);
1076 ff_ac3_bit_alloc_calc_mask(&s->bit_alloc, block->band_psd[ch],
1077 s->start_freq[ch], block->end_freq[ch],
1081 block->mask[ch]);
1089 * Ensure that bap for each block and channel point to the current bap_buffer.
1115 * @param[in,out] mant_cnt running counts for each bap value for each block
1135 * @param[in,out] mant_cnt running counts for each bap value for each block
1146 AC3Block *block = &s->blocks[blk];
1147 if (ch == CPL_CH && !block->cpl_in_use)
1151 FFMIN(end, block->end_freq[ch]) - start);
1193 AC3Block *block = &s->blocks[blk];
1195 for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
1201 s->ac3dsp.bit_alloc_calc_bap(block->mask[ch], block->psd[ch],
1202 s->start_freq[ch], block->end_freq[ch],
1317 * Quantize a set of mantissas for a single channel in a single block.
1427 AC3Block *block = &s->blocks[blk];
1430 got_cpl = !block->cpl_in_use;
1432 if (!got_cpl && ch > 1 && block->channel_in_cpl[ch-1]) {
1437 quantize_mantissas_blk_ch(&m, block->fixed_coef[ch],
1439 s->ref_bap[ch][blk], block->qmant[ch],
1440 s->start_freq[ch], block->end_freq[ch]);
1505 * Write one audio block to the output bitstream.
1510 AC3Block *block = &s->blocks[blk];
1512 /* block switching */
1533 put_bits(&s->pb, 1, block->new_cpl_strategy);
1534 if (block->new_cpl_strategy) {
1536 put_bits(&s->pb, 1, block->cpl_in_use);
1537 if (block->cpl_in_use) {
1543 put_bits(&s->pb, 1, block->channel_in_cpl[ch]);
1562 if (block->cpl_in_use) {
1564 if (block->channel_in_cpl[ch]) {
1565 if (!s->eac3 || block->new_cpl_coords[ch] != 2)
1566 put_bits(&s->pb, 1, block->new_cpl_coords[ch]);
1567 if (block->new_cpl_coords[ch]) {
1568 put_bits(&s->pb, 2, block->cpl_master_exp[ch]);
1570 put_bits(&s->pb, 4, block->cpl_coord_exp [ch][bnd]);
1571 put_bits(&s->pb, 4, block->cpl_coord_mant[ch][bnd]);
1581 put_bits(&s->pb, 1, block->new_rematrixing_strategy);
1582 if (block->new_rematrixing_strategy) {
1584 for (bnd = 0; bnd < block->num_rematrixing_bands; bnd++)
1585 put_bits(&s->pb, 1, block->rematrixing_flags[bnd]);
1591 for (ch = !block->cpl_in_use; ch <= s->fbw_channels; ch++)
1599 if (s->exp_strategy[ch][blk] != EXP_REUSE && !block->channel_in_cpl[ch])
1604 for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
1612 put_bits(&s->pb, 4, block->grouped_exp[ch][0] >> cpl);
1615 nb_groups = exponent_group_tab[cpl][s->exp_strategy[ch][blk]-1][block->end_freq[ch]-s->start_freq[ch]];
1617 put_bits(&s->pb, 7, block->grouped_exp[ch][i]);
1639 put_bits(&s->pb, 1, block->new_snr_offsets);
1640 if (block->new_snr_offsets) {
1642 for (ch = !block->cpl_in_use; ch <= s->channels; ch++) {
1652 if (block->cpl_in_use) {
1653 if (!s->eac3 || block->new_cpl_leak != 2)
1654 put_bits(&s->pb, 1, block->new_cpl_leak);
1655 if (block->new_cpl_leak) {
1667 got_cpl = !block->cpl_in_use;
1671 if (!got_cpl && ch > 1 && block->channel_in_cpl[ch-1]) {
1676 for (i = s->start_freq[ch]; i < block->end_freq[ch]; i++) {
1677 q = block->qmant[ch][i];
2194 AC3Block *block = &s->blocks[blk];
2195 av_freep(&block->mdct_coef);
2196 av_freep(&block->fixed_coef);
2197 av_freep(&block->exp);
2198 av_freep(&block->grouped_exp);
2199 av_freep(&block->psd);
2200 av_freep(&block->band_psd);
2201 av_freep(&block->mask);
2202 av_freep(&block->qmant);
2203 av_freep(&block->cpl_coord_exp);
2204 av_freep(&block->cpl_coord_mant);
2317 found use either 6 blocks or 1 block, even though 2 or 3 blocks
2505 AC3Block *block = &s->blocks[blk];
2507 if (!FF_ALLOCZ_TYPED_ARRAY(block->mdct_coef, channels) ||
2508 !FF_ALLOCZ_TYPED_ARRAY(block->exp, channels) ||
2509 !FF_ALLOCZ_TYPED_ARRAY(block->grouped_exp, channels) ||
2510 !FF_ALLOCZ_TYPED_ARRAY(block->psd, channels) ||
2511 !FF_ALLOCZ_TYPED_ARRAY(block->band_psd, channels) ||
2512 !FF_ALLOCZ_TYPED_ARRAY(block->mask, channels) ||
2513 !FF_ALLOCZ_TYPED_ARRAY(block->qmant, channels))
2517 if (!FF_ALLOCZ_TYPED_ARRAY(block->cpl_coord_exp, channels) ||
2518 !FF_ALLOCZ_TYPED_ARRAY(block->cpl_coord_mant, channels))
2523 /* arrangement: block, channel, coeff */
2524 block->grouped_exp[ch] = &s->grouped_exp_buffer[128 * (blk * channels + ch)];
2525 block->psd[ch] = &s->psd_buffer [AC3_MAX_COEFS * (blk * channels + ch)];
2526 block->band_psd[ch] = &s->band_psd_buffer [64 * (blk * channels + ch)];
2527 block->mask[ch] = &s->mask_buffer [64 * (blk * channels + ch)];
2528 block->qmant[ch] = &s->qmant_buffer [AC3_MAX_COEFS * (blk * channels + ch)];
2530 block->cpl_coord_exp[ch] = &s->cpl_coord_exp_buffer [16 * (blk * channels + ch)];
2531 block->cpl_coord_mant[ch] = &s->cpl_coord_mant_buffer[16 * (blk * channels + ch)];
2534 /* arrangement: channel, block, coeff */
2535 block->exp[ch] = &s->exp_buffer [AC3_MAX_COEFS * (s->num_blocks * ch + blk)];
2536 block->mdct_coef[ch] = &s->mdct_coef_buffer [AC3_MAX_COEFS * (s->num_blocks * ch + blk)];
2544 AC3Block *block = &s->blocks[blk];
2545 if (!FF_ALLOCZ_TYPED_ARRAY(block->fixed_coef, channels))
2548 block->fixed_coef[ch] = &s->fixed_coef_buffer[AC3_MAX_COEFS * (s->num_blocks * ch + blk)];
2552 AC3Block *block = &s->blocks[blk];
2553 if (!FF_ALLOCZ_TYPED_ARRAY(block->fixed_coef, channels))
2556 block->fixed_coef[ch] = (int32_t *)block->mdct_coef[ch];