On Wed, Jan 18, 2012 at 12:39 AM, Nathan Caldwell <[email protected]> wrote: > --- > libavcodec/aac_tablegen.c | 3 +++ > libavcodec/aac_tablegen.h | 9 ++++++++- > libavcodec/aac_tablegen_decl.h | 6 ++++++ > libavcodec/aaccoder.c | 7 ++++--- > 4 files changed, 21 insertions(+), 4 deletions(-) > > diff --git a/libavcodec/aac_tablegen.c b/libavcodec/aac_tablegen.c > index b2c6c95..a1b6864 100644 > --- a/libavcodec/aac_tablegen.c > +++ b/libavcodec/aac_tablegen.c > @@ -32,6 +32,9 @@ int main(void) > write_fileheader(); > > WRITE_ARRAY("const", float, ff_aac_pow2sf_tab); > +#if CONFIG_AAC_ENCODER > + WRITE_ARRAY("const", float, ff_aac_pow34sf_tab); > +#endif /* CONFIG_AAC_ENCODER */ > > return 0; > } > diff --git a/libavcodec/aac_tablegen.h b/libavcodec/aac_tablegen.h > index 8773d9b..15e13fd 100644 > --- a/libavcodec/aac_tablegen.h > +++ b/libavcodec/aac_tablegen.h > @@ -31,12 +31,19 @@ > #include "libavutil/mathematics.h" > #include "aac.h" > float ff_aac_pow2sf_tab[428]; > +#if CONFIG_AAC_ENCODER > +float ff_aac_pow34sf_tab[428]; > +#endif /* CONFIG_AAC_ENCODER */ > > void ff_aac_tableinit(void) > { > int i; > - for (i = 0; i < 428; i++) > + for (i = 0; i < 428; i++) { > ff_aac_pow2sf_tab[i] = pow(2, (i - POW_SF2_ZERO) / 4.); > +#if CONFIG_AAC_ENCODER > + ff_aac_pow34sf_tab[i] = sqrt(ff_aac_pow2sf_tab[i] * > sqrt(ff_aac_pow2sf_tab[i])); > +#endif /* CONFIG_AAC_ENCODER */ > + } > } > #endif /* CONFIG_HARDCODED_TABLES */ > > diff --git a/libavcodec/aac_tablegen_decl.h b/libavcodec/aac_tablegen_decl.h > index 496ca0c..d0cdadf 100644 > --- a/libavcodec/aac_tablegen_decl.h > +++ b/libavcodec/aac_tablegen_decl.h > @@ -26,9 +26,15 @@ > #if CONFIG_HARDCODED_TABLES > #define ff_aac_tableinit() > extern const float ff_aac_pow2sf_tab[428]; > +#if CONFIG_AAC_ENCODER > +extern const float ff_aac_pow34sf_tab[428]; > +#endif /* CONFIG_AAC_ENCODER */ > #else > void ff_aac_tableinit(void); > extern float ff_aac_pow2sf_tab[428]; > +#if CONFIG_AAC_ENCODER > +extern float ff_aac_pow34sf_tab[428]; > +#endif /* CONFIG_AAC_ENCODER */ > #endif /* CONFIG_HARDCODED_TABLES */ > > #endif /* AVCODEC_AAC_TABLEGEN_DECL_H */ > diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c > index ec78acc..72be2a2 100644 > --- a/libavcodec/aaccoder.c > +++ b/libavcodec/aaccoder.c > @@ -110,14 +110,15 @@ static av_always_inline float > quantize_and_encode_band_cost_template( > int *bits, int BT_ZERO, int BT_UNSIGNED, > int BT_PAIR, int BT_ESC) > { > - const float IQ = ff_aac_pow2sf_tab[POW_SF2_ZERO + scale_idx - > SCALE_ONE_POS + SCALE_DIV_512]; > - const float Q = ff_aac_pow2sf_tab[POW_SF2_ZERO - scale_idx + > SCALE_ONE_POS - SCALE_DIV_512]; > + const int q_idx = POW_SF2_ZERO - scale_idx + SCALE_ONE_POS - > SCALE_DIV_512; > + const float Q = ff_aac_pow2sf_tab [q_idx]; > + const float Q34 = ff_aac_pow34sf_tab[q_idx]; > + const float IQ = ff_aac_pow2sf_tab [POW_SF2_ZERO + scale_idx - > SCALE_ONE_POS + SCALE_DIV_512]; > const float CLIPPED_ESCAPE = 165140.0f*IQ; > int i, j; > float cost = 0; > const int dim = BT_PAIR ? 2 : 4; > int resbits = 0; > - const float Q34 = sqrtf(Q * sqrtf(Q)); > const int range = aac_cb_range[cb]; > const int maxval = aac_cb_maxval[cb]; > int off;
Does this have a measurable performance impact? _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
