[FFmpeg-cvslog] aacdec: dsputilize the scalar multiplication in intensity stereo

Young Han Lee git
Sun Feb 20 19:28:25 CET 2011


ffmpeg | branch: master | Young Han Lee <cpumaker at gmail.com> | Sat Feb 19 09:32:24 2011 +0900| [695f39c80bf226c0e7db542933f8fef72737f605] | committer: Michael Niedermayer

aacdec: dsputilize the scalar multiplication in intensity stereo
(cherry picked from commit 9707f84fa73c23352937fc7e4e0a85eaf3135cbc)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=695f39c80bf226c0e7db542933f8fef72737f605
---

 libavcodec/aacdec.c |   12 +++++++-----
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index ee5affe..a362d6a 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -1386,13 +1386,13 @@ static void apply_mid_side_stereo(AACContext *ac, ChannelElement *cpe)
  *                      [1] mask is decoded from bitstream; [2] mask is all 1s;
  *                      [3] reserved for scalable AAC
  */
-static void apply_intensity_stereo(ChannelElement *cpe, int ms_present)
+static void apply_intensity_stereo(AACContext *ac, ChannelElement *cpe, int ms_present)
 {
     const IndividualChannelStream *ics = &cpe->ch[1].ics;
     SingleChannelElement         *sce1 = &cpe->ch[1];
     float *coef0 = cpe->ch[0].coeffs, *coef1 = cpe->ch[1].coeffs;
     const uint16_t *offsets = ics->swb_offset;
-    int g, group, i, k, idx = 0;
+    int g, group, i, idx = 0;
     int c;
     float scale;
     for (g = 0; g < ics->num_window_groups; g++) {
@@ -1405,8 +1405,10 @@ static void apply_intensity_stereo(ChannelElement *cpe, int ms_present)
                         c *= 1 - 2 * cpe->ms_mask[idx];
                     scale = c * sce1->sf[idx];
                     for (group = 0; group < ics->group_len[g]; group++)
-                        for (k = offsets[i]; k < offsets[i + 1]; k++)
-                            coef1[group * 128 + k] = scale * coef0[group * 128 + k];
+                        ac->dsp.vector_fmul_scalar(coef1 + group * 128 + offsets[i],
+                                                   coef0 + group * 128 + offsets[i],
+                                                   scale,
+                                                   offsets[i + 1] - offsets[i]);
                 }
             } else {
                 int bt_run_end = sce1->band_type_run_end[idx];
@@ -1459,7 +1461,7 @@ static int decode_cpe(AACContext *ac, GetBitContext *gb, ChannelElement *cpe)
         }
     }
 
-    apply_intensity_stereo(cpe, ms_present);
+    apply_intensity_stereo(ac, cpe, ms_present);
     return 0;
 }
 




More information about the ffmpeg-cvslog mailing list