[FFmpeg-devel] [PATCH v4] [GSoC] [AAC] aaccoder: Implement Perceptual Noise Substitution for AAC

Rostislav Pehlivanov atomnuker at gmail.com
Wed Apr 15 20:54:44 CEST 2015


I did consider putting the whole thing outside however I noticed that the
outer loop modifies sf->idx[0] (by having w and g start from 0) which is
also the initial value for both the noise and the normal minscaler vars.
I'm pretty sure it wouldn't have caused a problem to just put it outside
and only use the last value for the minscaler_n but I decided it's best to
play it safe.

On 15 April 2015 at 17:55, Claudio Freire <klaussfreire at gmail.com> wrote:

> On Wed, Apr 15, 2015 at 8:18 AM, Rostislav Pehlivanov
> <atomnuker at gmail.com> wrote:
> > @@ -828,9 +882,17 @@ static void
> search_for_quantizers_twoloop(AVCodecContext *avctx,
> >
> >          fflag = 0;
> >          minscaler = av_clip(minscaler, 60, 255 - SCALE_MAX_DIFF);
> > +
> > +        for (w = 0; w < sce->ics.num_windows; w +=
> sce->ics.group_len[w])
> > +            for (g = 0; g < sce->ics.num_swb; g++)
> > +                if (sce->band_type[w*16+g] == NOISE_BT)
> > +                    sce->sf_idx[w*16+g] = av_clip(noise_sf[w*16+g],
> minscaler_n, minscaler_n + SCALE_MAX_DIFF);
> > +
> >          for (w = 0; w < sce->ics.num_windows; w +=
> sce->ics.group_len[w]) {
> >              for (g = 0; g < sce->ics.num_swb; g++) {
> >                  int prevsc = sce->sf_idx[w*16+g];
> > +                if (sce->band_type[w*16+g] == NOISE_BT)
> > +                    continue;
> >                  if (dists[w*16+g] > uplims[w*16+g] &&
> sce->sf_idx[w*16+g] > 60) {
> >                      if (find_min_book(maxvals[w*16+g],
> sce->sf_idx[w*16+g]-1))
> >                          sce->sf_idx[w*16+g]--;
>
>
> This is still done at each iteration rather than at the end.
>
> Still, it will be a correct result nonetheless (it's idempotent now),
> so I believe it can be committed.
>


More information about the ffmpeg-devel mailing list