Hi

The following two fixes (which are merged in one diff
cause i'm a bit lazy) remedies most of the click/pop
issues related to EIGHT_SHORT_SEQUENCE.

I say 'most' because there are still small audible
clicks with some of my test content.

But this is a vast improvement for sure.

I understand that there is no current maintainer of AAC
so unless someone objects I'll just apply the patches (split in two)
later today or tomorrow.

--- soc/aac.c	2007-11-09 18:05:16.000000000 +0100
+++ trunk/libavcodec/aac.c	2007-11-10 18:18:35.000000000 +0100
@@ -1293,13 +1293,15 @@
             for (gp = 0; gp < ics->group_len[g]; gp++) {
                 for (i = 0; i < ics->max_sfb; i++) {
                     if (ms->mask[g][i]) {
-                        for (k = offsets[i] + gp*128; k < offsets[i+1] + gp*128; k++) {
+                        for (k = offsets[i]; k < offsets[i+1]; k++) {
                             float tmp = ch0[k] - ch1[k];
                             ch0[k] += ch1[k];
                             ch1[k] = tmp;
                         }
                     }
                 }
+                ch0 += 128;
+                ch1 += 128;
             }
             //av_log(ac->avccontext, AV_LOG_INFO, "\n");
         }
@@ -1745,7 +1747,7 @@
             memcpy(saved, buf + 1024, 448 * sizeof(float));
             for (i = 448; i < 576; i++) buf[i + 1024] *= 0.125; // normalize
             ac->dsp.vector_fmul_reverse(saved + 448, buf + 1024 + 448, swindow, 128);
-            //for (i = 576; i < 1024; i++)   saved[i] = 0.0;
+            for (i = 576; i < 1024; i++)   saved[i] = 0.0;
         }
     } else {
         int i;
@@ -1763,13 +1765,14 @@
         vector_fmul_add_add_add(ac, out + 4*128, buf + 8*128, swindow, saved + 4*128, ac->revers + 3*128, ac->add_bias, 64);
         //for (i = -448; i < 1024 - 448; i++)
         //    out[i] = ac->add_bias;
+        saved -= 448;
         buf += 1024;
         ac->dsp.vector_fmul_add_add(saved,       buf + 64, swindow, ac->revers + 3*128+64,  0, 64, 1);
         ac->dsp.vector_fmul_add_add(saved + 64,  buf + 2*128, swindow, ac->revers + 4*128, 0, 128, 1);
         ac->dsp.vector_fmul_add_add(saved + 192, buf + 4*128, swindow, ac->revers + 5*128, 0, 128, 1);
         ac->dsp.vector_fmul_add_add(saved + 320, buf + 6*128, swindow, ac->revers + 6*128, 0, 128, 1);
         memcpy(                     saved + 448, ac->revers + 7*128, 128 * sizeof(float));
-        //for (i = 576; i < 1024; i++) saved[i] = 0.0;
+        for (i = 576; i < 1024; i++) saved[i] = 0.0;
     }
 }
 
_______________________________________________
FFmpeg-soc mailing list
[email protected]
http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc

Reply via email to