Commit 9e526213 authored by Michael Niedermayer's avatar Michael Niedermayer

avfilter/af_volume: Use avpriv_float_dsp_alloc()

Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent aa97223f
...@@ -111,6 +111,11 @@ static int set_expr(AVExpr **pexpr, const char *expr, void *log_ctx) ...@@ -111,6 +111,11 @@ static int set_expr(AVExpr **pexpr, const char *expr, void *log_ctx)
static av_cold int init(AVFilterContext *ctx) static av_cold int init(AVFilterContext *ctx)
{ {
VolumeContext *vol = ctx->priv; VolumeContext *vol = ctx->priv;
vol->fdsp = avpriv_float_dsp_alloc(0);
if (!vol->fdsp)
return AVERROR(ENOMEM);
return set_expr(&vol->volume_pexpr, vol->volume_expr, ctx); return set_expr(&vol->volume_pexpr, vol->volume_expr, ctx);
} }
...@@ -119,6 +124,7 @@ static av_cold void uninit(AVFilterContext *ctx) ...@@ -119,6 +124,7 @@ static av_cold void uninit(AVFilterContext *ctx)
VolumeContext *vol = ctx->priv; VolumeContext *vol = ctx->priv;
av_expr_free(vol->volume_pexpr); av_expr_free(vol->volume_pexpr);
av_opt_free(vol); av_opt_free(vol);
av_freep(&vol->fdsp);
} }
static int query_formats(AVFilterContext *ctx) static int query_formats(AVFilterContext *ctx)
...@@ -233,11 +239,9 @@ static av_cold void volume_init(VolumeContext *vol) ...@@ -233,11 +239,9 @@ static av_cold void volume_init(VolumeContext *vol)
vol->scale_samples = scale_samples_s32; vol->scale_samples = scale_samples_s32;
break; break;
case AV_SAMPLE_FMT_FLT: case AV_SAMPLE_FMT_FLT:
avpriv_float_dsp_init(&vol->fdsp, 0);
vol->samples_align = 4; vol->samples_align = 4;
break; break;
case AV_SAMPLE_FMT_DBL: case AV_SAMPLE_FMT_DBL:
avpriv_float_dsp_init(&vol->fdsp, 0);
vol->samples_align = 8; vol->samples_align = 8;
break; break;
} }
...@@ -428,13 +432,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf) ...@@ -428,13 +432,13 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
} }
} else if (av_get_packed_sample_fmt(vol->sample_fmt) == AV_SAMPLE_FMT_FLT) { } else if (av_get_packed_sample_fmt(vol->sample_fmt) == AV_SAMPLE_FMT_FLT) {
for (p = 0; p < vol->planes; p++) { for (p = 0; p < vol->planes; p++) {
vol->fdsp.vector_fmul_scalar((float *)out_buf->extended_data[p], vol->fdsp->vector_fmul_scalar((float *)out_buf->extended_data[p],
(const float *)buf->extended_data[p], (const float *)buf->extended_data[p],
vol->volume, plane_samples); vol->volume, plane_samples);
} }
} else { } else {
for (p = 0; p < vol->planes; p++) { for (p = 0; p < vol->planes; p++) {
vol->fdsp.vector_dmul_scalar((double *)out_buf->extended_data[p], vol->fdsp->vector_dmul_scalar((double *)out_buf->extended_data[p],
(const double *)buf->extended_data[p], (const double *)buf->extended_data[p],
vol->volume, plane_samples); vol->volume, plane_samples);
} }
......
...@@ -67,7 +67,7 @@ enum ReplayGainType { ...@@ -67,7 +67,7 @@ enum ReplayGainType {
typedef struct VolumeContext { typedef struct VolumeContext {
const AVClass *class; const AVClass *class;
AVFloatDSPContext fdsp; AVFloatDSPContext *fdsp;
enum PrecisionType precision; enum PrecisionType precision;
enum EvalMode eval_mode; enum EvalMode eval_mode;
const char *volume_expr; const char *volume_expr;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment