On Wed, 29 Mar 2017, Hendrik Leppkes wrote:

On Wed, Mar 29, 2017 at 7:53 PM, Diego Biurrun <[email protected]> wrote:
On Wed, Mar 29, 2017 at 02:02:30PM +0300, Martin Storsjö wrote:
--- a/libavcodec/atrac3plusdsp.c
+++ b/libavcodec/atrac3plusdsp.c
@@ -177,12 +177,14 @@ static void waves_synth(Atrac3pWaveSynthParams 
*synth_param,
 void ff_atrac3p_generate_tones(Atrac3pChanUnitCtx *ch_unit, AVFloatDSPContext 
*fdsp,
                                int ch_num, int sb, float *out)
 {
-    DECLARE_ALIGNED(32, float, wavreg1)[128] = { 0 };
-    DECLARE_ALIGNED(32, float, wavreg2)[128] = { 0 };
+    LOCAL_ALIGNED_32(float, wavreg1, [128]);
+    LOCAL_ALIGNED_32(float, wavreg2, [128]);
     int i, reg1_env_nonzero, reg2_env_nonzero;
     Atrac3pWavesData *tones_now  = 
&ch_unit->channels[ch_num].tones_info_prev[sb];
     Atrac3pWavesData *tones_next = &ch_unit->channels[ch_num].tones_info[sb];

+    memset(wavreg1, 0, sizeof(float) * 128);
+    memset(wavreg2, 0, sizeof(float) * 128);

We have to resort to these manual memsets in many other places. I think
the proper solution would be to add LOCAL_ALIGNEDZ macros that include
a zero initialization.


That wouldn't be possible with declarations before statements rules, would it?

You should be able to use normal (= { 0 }) zero initialization for the array used within LOCAL_ALIGNED if you modify the macros, instead of having a separate memset for it. It does requires a bit of wrangling of the macros though.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to