On 23/11/2016 08:14, Diego Biurrun wrote:
> ---
> libavcodec/ac3enc_fixed.c | 58 ++++++++++++++++++------------------
> libavcodec/ac3enc_float.c | 70
> +++++++++++++++++++++++---------------------
> libavcodec/ac3enc_template.c | 9 ------
> 3 files changed, 64 insertions(+), 73 deletions(-)
>
> diff --git a/libavcodec/ac3enc_fixed.c b/libavcodec/ac3enc_fixed.c
> index c26f9c0..c1cf825 100644
> --- a/libavcodec/ac3enc_fixed.c
> +++ b/libavcodec/ac3enc_fixed.c
> @@ -38,36 +38,6 @@
> static const AVClass ac3enc_class = { "Fixed-Point AC-3 Encoder",
> av_default_item_name,
> ac3_options, LIBAVUTIL_VERSION_INT };
>
> -static int normalize_samples(AC3EncodeContext *s);
> -
> -#include "ac3enc_template.c"
> -
> -
> -/**
> - * Finalize MDCT and free allocated memory.
> - *
> - * @param s AC-3 encoder private context
> - */
> -av_cold void AC3_NAME(mdct_end)(AC3EncodeContext *s)
> -{
> - ff_mdct_end(&s->mdct);
> -}
> -
> -
> -/**
> - * Initialize MDCT tables.
> - *
> - * @param s AC-3 encoder private context
> - * @return 0 on success, negative error code on failure
> - */
> -av_cold int AC3_NAME(mdct_init)(AC3EncodeContext *s)
> -{
> - int ret = ff_mdct_init(&s->mdct, 9, 0, -1.0);
> - s->mdct_window = ff_ac3_window;
> - return ret;
> -}
> -
> -
> /*
> * Normalize the input samples to use the maximum available precision.
> * This assumes signed 16-bit input samples.
> @@ -126,6 +96,34 @@ static CoefType calc_cpl_coord(CoefSumType energy_ch,
> CoefSumType energy_cpl)
> }
>
>
> +#include "ac3enc_template.c"
> +
> +
> +/**
> + * Finalize MDCT and free allocated memory.
> + *
> + * @param s AC-3 encoder private context
> + */
> +av_cold void AC3_NAME(mdct_end)(AC3EncodeContext *s)
> +{
> + ff_mdct_end(&s->mdct);
> +}
> +
> +
> +/**
> + * Initialize MDCT tables.
> + *
> + * @param s AC-3 encoder private context
> + * @return 0 on success, negative error code on failure
> + */
> +av_cold int AC3_NAME(mdct_init)(AC3EncodeContext *s)
> +{
> + int ret = ff_mdct_init(&s->mdct, 9, 0, -1.0);
> + s->mdct_window = ff_ac3_window;
> + return ret;
> +}
> +
> +
> static av_cold int ac3_fixed_encode_init(AVCodecContext *avctx)
> {
> AC3EncodeContext *s = avctx->priv_data;
> diff --git a/libavcodec/ac3enc_float.c b/libavcodec/ac3enc_float.c
> index 5bae4bc..249f9ed 100644
> --- a/libavcodec/ac3enc_float.c
> +++ b/libavcodec/ac3enc_float.c
> @@ -39,6 +39,42 @@
> static const AVClass ac3enc_class = { "AC-3 Encoder", av_default_item_name,
> ac3_options, LIBAVUTIL_VERSION_INT };
>
> +
> +/*
> + * Scale MDCT coefficients from float to 24-bit fixed-point.
> + */
> +static void scale_coefficients(AC3EncodeContext *s)
> +{
> + int chan_size = AC3_MAX_COEFS * s->num_blocks;
> + int cpl = s->cpl_on;
> + s->ac3dsp.float_to_fixed24(s->fixed_coef_buffer + (chan_size * !cpl),
> + s->mdct_coef_buffer + (chan_size * !cpl),
> + chan_size * (s->channels + cpl));
> +}
> +
> +
> +/*
> + * Clip MDCT coefficients to allowable range.
> + */
> +static void clip_coefficients(AudioDSPContext *adsp, float *coef,
> + unsigned int len)
> +{
> + adsp->vector_clipf(coef, coef, len, COEF_MIN, COEF_MAX);
> +}
> +
> +
> +/*
> + * Calculate a single coupling coordinate.
> + */
> +static CoefType calc_cpl_coord(CoefSumType energy_ch, CoefSumType energy_cpl)
> +{
> + float coord = 0.125;
> + if (energy_cpl > 0)
> + coord *= sqrtf(energy_ch / energy_cpl);
> + return FFMIN(coord, COEF_MAX);
> +}
> +
> +
> #include "ac3enc_template.c"
>
>
> @@ -82,40 +118,6 @@ av_cold int ff_ac3_float_mdct_init(AC3EncodeContext *s)
> }
>
>
> -/*
> - * Scale MDCT coefficients from float to 24-bit fixed-point.
> - */
> -static void scale_coefficients(AC3EncodeContext *s)
> -{
> - int chan_size = AC3_MAX_COEFS * s->num_blocks;
> - int cpl = s->cpl_on;
> - s->ac3dsp.float_to_fixed24(s->fixed_coef_buffer + (chan_size * !cpl),
> - s->mdct_coef_buffer + (chan_size * !cpl),
> - chan_size * (s->channels + cpl));
> -}
> -
> -
> -/*
> - * Clip MDCT coefficients to allowable range.
> - */
> -static void clip_coefficients(AudioDSPContext *adsp, float *coef,
> - unsigned int len)
> -{
> - adsp->vector_clipf(coef, coef, len, COEF_MIN, COEF_MAX);
> -}
> -
> -
> -/*
> - * Calculate a single coupling coordinate.
> - */
> -static CoefType calc_cpl_coord(CoefSumType energy_ch, CoefSumType energy_cpl)
> -{
> - float coord = 0.125;
> - if (energy_cpl > 0)
> - coord *= sqrtf(energy_ch / energy_cpl);
> - return FFMIN(coord, COEF_MAX);
> -}
> -
> av_cold int ff_ac3_float_encode_init(AVCodecContext *avctx)
> {
> AC3EncodeContext *s = avctx->priv_data;
> diff --git a/libavcodec/ac3enc_template.c b/libavcodec/ac3enc_template.c
> index eefcef5..ef40b5a 100644
> --- a/libavcodec/ac3enc_template.c
> +++ b/libavcodec/ac3enc_template.c
> @@ -36,15 +36,6 @@
> #include "ac3enc.h"
> #include "eac3enc.h"
>
> -/* prototypes for static functions in ac3enc_fixed.c and ac3enc_float.c */
> -
> -static void scale_coefficients(AC3EncodeContext *s);
> -
> -static void clip_coefficients(AudioDSPContext *adsp, CoefType *coef,
> - unsigned int len);
> -
> -static CoefType calc_cpl_coord(CoefSumType energy_ch, CoefSumType
> energy_cpl);
> -
>
> int AC3_NAME(allocate_sample_buffers)(AC3EncodeContext *s)
> {
>
Ok.
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel