diff options
author | Paul B Mahol <onemda@gmail.com> | 2018-09-12 12:29:02 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2018-09-12 19:15:09 +0200 |
commit | bb16a0624a2f98d21bac3f42a731c4c70f06aad3 (patch) | |
tree | d499f2a418063c1bd8575e424642f1ab6eb3b0b9 | |
parent | b69ea742ab23ad74b2ae2772764743642212a139 (diff) | |
download | ffmpeg-streaming-bb16a0624a2f98d21bac3f42a731c4c70f06aad3.zip ffmpeg-streaming-bb16a0624a2f98d21bac3f42a731c4c70f06aad3.tar.gz |
avutil: add float_dsp.vector_dmul
-rw-r--r-- | libavutil/float_dsp.c | 9 | ||||
-rw-r--r-- | libavutil/float_dsp.h | 16 |
2 files changed, 25 insertions, 0 deletions
diff --git a/libavutil/float_dsp.c b/libavutil/float_dsp.c index 1d4911d..6e28d71 100644 --- a/libavutil/float_dsp.c +++ b/libavutil/float_dsp.c @@ -32,6 +32,14 @@ static void vector_fmul_c(float *dst, const float *src0, const float *src1, dst[i] = src0[i] * src1[i]; } +static void vector_dmul_c(double *dst, const double *src0, const double *src1, + int len) +{ + int i; + for (i = 0; i < len; i++) + dst[i] = src0[i] * src1[i]; +} + static void vector_fmac_scalar_c(float *dst, const float *src, float mul, int len) { @@ -131,6 +139,7 @@ av_cold AVFloatDSPContext *avpriv_float_dsp_alloc(int bit_exact) return NULL; fdsp->vector_fmul = vector_fmul_c; + fdsp->vector_dmul = vector_dmul_c; fdsp->vector_fmac_scalar = vector_fmac_scalar_c; fdsp->vector_fmul_scalar = vector_fmul_scalar_c; fdsp->vector_dmac_scalar = vector_dmac_scalar_c; diff --git a/libavutil/float_dsp.h b/libavutil/float_dsp.h index 2c24d93..9c66459 100644 --- a/libavutil/float_dsp.h +++ b/libavutil/float_dsp.h @@ -173,6 +173,22 @@ typedef struct AVFloatDSPContext { * @return sum of elementwise products */ float (*scalarproduct_float)(const float *v1, const float *v2, int len); + + /** + * Calculate the entry wise product of two vectors of doubles and store the result in + * a vector of doubles. + * + * @param dst output vector + * constraints: 32-byte aligned + * @param src0 first input vector + * constraints: 32-byte aligned + * @param src1 second input vector + * constraints: 32-byte aligned + * @param len number of elements in the input + * constraints: multiple of 16 + */ + void (*vector_dmul)(double *dst, const double *src0, const double *src1, + int len); } AVFloatDSPContext; /** |