On Tuesday, November 5, 2013, Alex Converse wrote:

> On Mon, Nov 4, 2013 at 10:14 AM, Diego Biurrun 
> <[email protected]<javascript:;>>
> wrote:
> >
> > ---
> >
> > While clearly not a thing of supreme beauty, this silences all warnings
> > on a previously very noisy file, both with hardcoded and generated
> tables.
> >
>
> The only warning my compiler generates with this file is:
> "warning: unknown warning option '-Wno-maybe-uninitialized'; did you
> mean '-Wno-uninitialized'?"
> but the gcc developers seem pretty emphatic that their warnings are
> correct. So I guess I'm ok with this in general. See specific comments
> below.


You should have they warning only when using clang.
Can you just confirm you are using clang? If gcc what version is it and
which operating system?
Thank you,
Vittorio


>
> One alternate approach (that I'm not necessarily advocating), is to
> make the actual arrays in aacps_table prefixed, do the casting in that
> file and have all the pointers used from aacps.c full const, hiding
> all the ugly in the tablegen header but ultimately giving both
> implementations a consistent interface.
>
> > diff --git a/libavcodec/aacps.c b/libavcodec/aacps.c
> > index 1abafe2..2b9ca4f 100644
> > --- a/libavcodec/aacps.c
> > +++ b/libavcodec/aacps.c
> > @@ -606,7 +609,8 @@ static void map_val_20_to_34(float
> par[PS_MAX_NR_IIDICC])
> >      par[ 0] =  par[ 0];
> >  }
> >
> > -static void decorrelation(PSContext *ps, float (*out)[32][2], const
> float (*s)[32][2], int is34)
> > +static void decorrelation(PSContext *ps, float (*out)[32][2],
> > +                          TABLE_CONST float (*s)[32][2], int is34)
> >  {
> >      LOCAL_ALIGNED_16(float, power, [34], [PS_QMF_TIME_SLOTS]);
> >      LOCAL_ALIGNED_16(float, transient_gain, [34], [PS_QMF_TIME_SLOTS]);
> > @@ -634,7 +638,7 @@ static void decorrelation(PSContext *ps, float
> (*out)[32][2], const float (*s)[3
> >
> >      for (k = 0; k < NR_BANDS[is34]; k++) {
> >          int i = k_to_i[k];
> > -        ps->dsp.add_squares(power[i], s[k], nL - n0);
> > +        ps->dsp.add_squares(power[i], (const float (*)[2]) s[k], nL -
> n0);
> >      }
> >
> >      //Transient detection
> > @@ -747,7 +751,7 @@ static void stereo_processing(PSContext *ps, float
> (*l)[32][2], float (*r)[32][2
> >      int8_t (*ipd_mapped)[PS_MAX_NR_IIDICC] = ipd_mapped_buf;
> >      int8_t (*opd_mapped)[PS_MAX_NR_IIDICC] = opd_mapped_buf;
> >      const int8_t *k_to_i = is34 ? k_to_i_34 : k_to_i_20;
> > -    const float (*H_LUT)[8][4] = (PS_BASELINE || ps->icc_mode < 3) ? HA
> : HB;
> > +    TABLE_CONST float (*H_LUT)[8][4] = (PS_BASELINE || ps->icc_mode <
> 3) ? HA : HB;
>
> I'd rather see a cast on the RHS here.
>
> >
> >      //Remapping
> >      if (ps->num_env_old) {
> > @@ -897,7 +901,7 @@ int ff_ps_apply(AVCodecContext *avctx, PSContext
> *ps, float L[2][38][64], float
> >          memset(ps->ap_delay + top, 0, (NR_ALLPASS_BANDS[is34] -
> top)*sizeof(ps->ap_delay[0]));
> >
> >      hybrid_analysis(&ps->dsp, Lbuf, ps->in_buf, L, is34, len);
> > -    decorrelation(ps, Rbuf, Lbuf, is34);
> > +    decorrelation(ps, Rbuf, (const float (*)[32][2]) Lbuf, is34);
>
> The changes wrt this Lbuf (s inside the function) seem inconsistent.
> You are unconditionally adding the const in the call, then using
> TABLE_CONST in the function declaration, then recasting it again when
> you pass it to add_squares().
>
> Meanwhile calls inside this function that take transient_gain still warn.
>
> > diff --git a/libavcodec/aacps_tablegen.h b/libavcodec/aacps_tablegen.h
> > index 701812b..87383bd 100644
> > --- a/libavcodec/aacps_tablegen.h
> > +++ b/libavcodec/aacps_tablegen.h
> > @@ -28,6 +28,7 @@
> >
> >  #if CONFIG_HARDCODED_TABLES
> >  #define ps_tableinit()
> > +#define TABLE_CONST const
> >  #include "libavcodec/aacps_tables.h"
> >  #else
> >  #include "libavutil/common.h"
> > @@ -37,6 +38,7 @@
> >  #define NR_ALLPASS_BANDS20 30
> >  #define NR_ALLPASS_BANDS34 50
> >  #define PS_AP_LINKS 3
> > +#define TABLE_CONST
> >  static float pd_re_smooth[8*8*8];
> >  static float pd_im_smooth[8*8*8];
> >  static float HA[46][8][4];
> > diff --git a/libavcodec/aacpsdsp.h b/libavcodec/aacpsdsp.h
> > index 93737d2..dc380b1 100644
> > --- a/libavcodec/aacpsdsp.h
> > +++ b/libavcodec/aacpsdsp.h
> > @@ -38,7 +38,7 @@ typedef struct PSDSPContext {
> >                                     int i, int len);
> >      void (*decorrelate)(float (*out)[2], float (*delay)[2],
> >                          float
> (*ap_delay)[PS_QMF_TIME_SLOTS+PS_MAX_AP_DELAY][2],
> > -                        const float phi_fract[2], float (*Q_fract)[2],
> > +                        const float phi_fract[2], const float
> (*Q_fract)[2],
> >                          const float *transient_gain,
> >                          float g_decay_slope,
> >                          int len);
>
> Shouldn't the implementations be updated to match?
> _______________________________________________
> libav-devel mailing list
> [email protected] <javascript:;>
> https://lists.libav.org/mailman/listinfo/libav-devel
>
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to