On Fri, Jul 03, 2015 at 12:01:44AM -0300, Claudio Freire wrote:
> On Thu, Jul 2, 2015 at 3:13 PM, Rostislav Pehlivanov
> <atomnu...@gmail.com> wrote:
> > There were some mistakes in the code for M/S stereo, this commit fixes 
> > them. The start variable was not being reset for every window and every 
> > access to the coefficients was incorrect as well. This fixes that by 
> > properly addressing the coefficients using both windows and setting the 
> > start on every window to zero.
> > ---
> >  libavcodec/aaccoder.c | 15 ++++++++-------
> >  1 file changed, 8 insertions(+), 7 deletions(-)
> >
> > diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c
> > index 3fcc8b4..33cbe7b 100644
> > --- a/libavcodec/aaccoder.c
> > +++ b/libavcodec/aaccoder.c
> > @@ -1143,6 +1143,7 @@ static void search_for_ms(AACEncContext *s, 
> > ChannelElement *cpe,
> >      if (!cpe->common_window)
> >          return;
> >      for (w = 0; w < sce0->ics.num_windows; w += sce0->ics.group_len[w]) {
> > +        start = 0;
> >          for (g = 0;  g < sce0->ics.num_swb; g++) {
> >              if (!cpe->ch[0].zeroes[w*16+g] && !cpe->ch[1].zeroes[w*16+g]) {
> >                  float dist1 = 0.0f, dist2 = 0.0f;
> > @@ -1152,22 +1153,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+w2*128+i]
> > -                              + sce1->pcoeffs[start+w2*128+i]) * 0.5;
> > +                        M[i] = (sce0->pcoeffs[start+(w+w2)*128+i]
> > +                              + sce1->pcoeffs[start+(w+w2)*128+i]) * 0.5;
> >                          S[i] =  M[i]
> > -                              - sce1->pcoeffs[start+w2*128+i];
> > +                              - sce1->pcoeffs[start+(w+w2)*128+i];
> >                      }
> > -                    abs_pow34_v(L34, sce0->coeffs+start+w2*128, 
> > sce0->ics.swb_sizes[g]);
> > -                    abs_pow34_v(R34, sce1->coeffs+start+w2*128, 
> > sce0->ics.swb_sizes[g]);
> > +                    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 + 
> > 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);
> > -                    dist1 += quantize_band_cost(s, sce1->coeffs + start + 
> > 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],
> 
> 
> LGTM.

applied

thanks

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

You can kill me, but you cannot change the truth.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to