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.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel