diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c index f5ad5eacdf..24ea48e6d3 100644 --- a/libavcodec/aaccoder.c +++ b/libavcodec/aaccoder.c @@ -330,8 +330,8 @@ static void encode_window_bands_info(AACEncContext *s, SingleChannelElement *sce } for (w = 0; w < group_len; w++) { FFPsyBand *band = &s->psy.ch[s->cur_channel].psy_bands[(win+w)*16+swb]; - rd += quantize_band_cost(s, sce->coeffs + start + w*128, - s->scoefs + start + w*128, size, + rd += quantize_band_cost(s, &sce->coeffs[start + w*128], + &s->scoefs[start + w*128], size, sce->sf_idx[(win+w)*16+swb], aac_cb_out_map[cb], lambda / band->threshold, INFINITY, NULL, 0); } @@ -461,8 +461,8 @@ static void codebook_trellis_rate(AACEncContext *s, SingleChannelElement *sce, continue; } for (w = 0; w < group_len; w++) { - bits += quantize_band_cost(s, sce->coeffs + start + w*128, - s->scoefs + start + w*128, size, + bits += quantize_band_cost(s, &sce->coeffs[start + w*128], + &s->scoefs[start + w*128], size, sce->sf_idx[win*16+swb], aac_cb_out_map[cb], 0, INFINITY, NULL, 0); @@ -636,7 +636,7 @@ static void search_for_quantizers_anmr(AVCodecContext *avctx, AACEncContext *s, for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { start = w*128; for (g = 0; g < sce->ics.num_swb; g++) { - const float *coefs = sce->coeffs + start; + const float *coefs = &sce->coeffs[start]; float qmin, qmax; int nz = 0; @@ -800,8 +800,8 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx, for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { start = w*128; for (g = 0; g < sce->ics.num_swb; g++) { - const float *coefs = sce->coeffs + start; - const float *scaled = s->scoefs + start; + const float *coefs = &sce->coeffs[start]; + const float *scaled = &s->scoefs[start]; int bits = 0; int cb; float dist = 0.0f; @@ -896,7 +896,7 @@ static void search_for_quantizers_faac(AVCodecContext *avctx, AACEncContext *s, } } else { for (w = 0; w < 8; w++) { - const float *coeffs = sce->coeffs + w*128; + const float *coeffs = &sce->coeffs[w*128]; curband = start = 0; for (i = 0; i < 128; i++) { if (i - start >= sce->ics.swb_sizes[curband]) { @@ -921,7 +921,7 @@ static void search_for_quantizers_faac(AVCodecContext *avctx, AACEncContext *s, for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { start = w*128; for (g = 0; g < sce->ics.num_swb; g++) { - float *coefs = sce->coeffs + start; + float *coefs = &sce->coeffs[start]; const int size = sce->ics.swb_sizes[g]; int start2 = start, end2 = start + size, peakpos = start; float maxval = -1, thr = 0.0f, t; @@ -962,8 +962,8 @@ static void search_for_quantizers_faac(AVCodecContext *avctx, AACEncContext *s, for (w = 0; w < sce->ics.num_windows; w += sce->ics.group_len[w]) { start = w*128; for (g = 0; g < sce->ics.num_swb; g++) { - const float *coefs = sce->coeffs + start; - const float *scaled = s->scoefs + start; + const float *coefs = &sce->coeffs[start]; + const float *scaled = &s->scoefs[start]; const int size = sce->ics.swb_sizes[g]; int scf, prev_scf, step; int min_scf = -1, max_scf = 256; @@ -1229,22 +1229,22 @@ static void search_for_ms(AACEncContext *s, ChannelElement *cpe) float minthr = FFMIN(band0->threshold, band1->threshold); float maxthr = FFMAX(band0->threshold, band1->threshold); for (i = 0; i < sce0->ics.swb_sizes[g]; i++) { - M[i] = (sce0->pcoeffs[start+(w+w2)*128+i] - + sce1->pcoeffs[start+(w+w2)*128+i]) * 0.5; + M[i] = (sce0->coeffs[start+(w+w2)*128+i] + + sce1->coeffs[start+(w+w2)*128+i]) * 0.5; S[i] = M[i] - - sce1->pcoeffs[start+(w+w2)*128+i]; + - sce1->coeffs[start+(w+w2)*128+i]; } abs_pow34_v(L34, sce0->coeffs+start+(w+w2)*128, sce0->ics.swb_sizes[g]); abs_pow34_v(R34, sce1->coeffs+start+(w+w2)*128, sce0->ics.swb_sizes[g]); abs_pow34_v(M34, M, sce0->ics.swb_sizes[g]); abs_pow34_v(S34, S, sce0->ics.swb_sizes[g]); - dist1 += quantize_band_cost(s, sce0->coeffs + start + (w+w2)*128, + dist1 += quantize_band_cost(s, &sce0->coeffs[start + (w+w2)*128], L34, sce0->ics.swb_sizes[g], sce0->sf_idx[(w+w2)*16+g], sce0->band_type[(w+w2)*16+g], lambda / band0->threshold, INFINITY, NULL, 0); - dist1 += quantize_band_cost(s, sce1->coeffs + start + (w+w2)*128, + dist1 += quantize_band_cost(s, &sce1->coeffs[start + (w+w2)*128], R34, sce1->ics.swb_sizes[g], sce1->sf_idx[(w+w2)*16+g], diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c index d87a90c7a0..8d48790745 100644 --- a/libavcodec/aacenc.c +++ b/libavcodec/aacenc.c @@ -149,7 +149,7 @@ static void apply_window_and_mdct(AACEncContext *s, SingleChannelElement *sce, s->mdct1024.mdct_calc(&s->mdct1024, sce->coeffs, output); else for (i = 0; i < 1024; i += 128) - s->mdct128.mdct_calc(&s->mdct128, sce->coeffs + i, output + i*2); + s->mdct128.mdct_calc(&s->mdct128, &sce->coeffs[i], output + i*2); memcpy(audio, audio + 1024, sizeof(audio[0]) * 1024); memcpy(sce->pcoeffs, sce->coeffs, sizeof(sce->pcoeffs)); } @@ -210,15 +210,17 @@ static void adjust_frame_information(ChannelElement *cpe, int chans) int p = -1 + 2 * (cpe->ch[1].band_type[w*16+g] - 14); float scale = cpe->ch[0].is_ener[w*16+g]; for (i = 0; i < ics->swb_sizes[g]; i++) { - cpe->ch[0].coeffs[start+i] = (cpe->ch[0].pcoeffs[start+i] + p*cpe->ch[1].pcoeffs[start+i]) * scale; + cpe->ch[0].coeffs[start+i] = (cpe->ch[0].coeffs[start+i] + p*cpe->ch[1].coeffs[start+i]) * scale; cpe->ch[1].coeffs[start+i] = 0.0f; } } else if (cpe->ms_mask[w*16 + g] && cpe->ch[0].band_type[w*16 + g] < NOISE_BT && cpe->ch[1].band_type[w*16 + g] < NOISE_BT) { for (i = 0; i < ics->swb_sizes[g]; i++) { - cpe->ch[0].coeffs[start+i] = (cpe->ch[0].pcoeffs[start+i] + cpe->ch[1].pcoeffs[start+i]) * 0.5f; - cpe->ch[1].coeffs[start+i] = cpe->ch[0].coeffs[start+i] - cpe->ch[1].pcoeffs[start+i]; + float L = (cpe->ch[0].coeffs[start+i] + cpe->ch[1].coeffs[start+i]) * 0.5f; + float R = L - cpe->ch[1].coeffs[start+i]; + cpe->ch[0].coeffs[start+i] = L; + cpe->ch[1].coeffs[start+i] = R; } } start += ics->swb_sizes[g]; @@ -374,7 +376,7 @@ static void avoid_clipping(AACEncContext *s, SingleChannelElement *sce) for (w = 0; w < sce->ics.num_windows; w++) { start = 0; for (i = 0; i < sce->ics.max_sfb; i++) { - float *swb_coeffs = sce->coeffs + start + w*128; + float *swb_coeffs = &sce->coeffs[start + w*128]; for (j = 0; j < sce->ics.swb_sizes[i]; j++) swb_coeffs[j] *= sce->ics.clip_avoidance_factor; start += sce->ics.swb_sizes[i];