[FFmpeg-cvslog] avfilter/af_volume: Use avpriv_float_dsp_alloc()

Michael Niedermayer git at videolan.org
Tue Nov 18 13:53:13 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Nov 18 12:24:41 2014 +0100| [9e526213a27f803f9f0d9682489655a1aef0feff] | committer: Michael Niedermayer

avfilter/af_volume: Use avpriv_float_dsp_alloc()

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9e526213a27f803f9f0d9682489655a1aef0feff
---

 libavfilter/af_volume.c |   12 ++++++++----
 libavfilter/af_volume.h |    2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/libavfilter/af_volume.c b/libavfilter/af_volume.c
index 9900d22..4809ae7 100644
--- a/libavfilter/af_volume.c
+++ b/libavfilter/af_volume.c
@@ -111,6 +111,11 @@ static int set_expr(AVExpr **pexpr, const char *expr, void *log_ctx)
 static av_cold int init(AVFilterContext *ctx)
 {
     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);
 }
 
@@ -119,6 +124,7 @@ static av_cold void uninit(AVFilterContext *ctx)
     VolumeContext *vol = ctx->priv;
     av_expr_free(vol->volume_pexpr);
     av_opt_free(vol);
+    av_freep(&vol->fdsp);
 }
 
 static int query_formats(AVFilterContext *ctx)
@@ -233,11 +239,9 @@ static av_cold void volume_init(VolumeContext *vol)
         vol->scale_samples = scale_samples_s32;
         break;
     case AV_SAMPLE_FMT_FLT:
-        avpriv_float_dsp_init(&vol->fdsp, 0);
         vol->samples_align = 4;
         break;
     case AV_SAMPLE_FMT_DBL:
-        avpriv_float_dsp_init(&vol->fdsp, 0);
         vol->samples_align = 8;
         break;
     }
@@ -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) {
             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],
                                              vol->volume, plane_samples);
             }
         } else {
             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],
                                              vol->volume, plane_samples);
             }
diff --git a/libavfilter/af_volume.h b/libavfilter/af_volume.h
index e78e042..53a328e 100644
--- a/libavfilter/af_volume.h
+++ b/libavfilter/af_volume.h
@@ -67,7 +67,7 @@ enum ReplayGainType {
 
 typedef struct VolumeContext {
     const AVClass *class;
-    AVFloatDSPContext fdsp;
+    AVFloatDSPContext *fdsp;
     enum PrecisionType precision;
     enum EvalMode eval_mode;
     const char *volume_expr;



More information about the ffmpeg-cvslog mailing list