summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/aacenc_utils.h2
-rw-r--r--libavcodec/aacpsy.c3
-rw-r--r--libavcodec/acelp_pitch_delay.c3
-rw-r--r--libavcodec/cngdec.c2
-rw-r--r--libavcodec/dcaenc.c2
-rw-r--r--libavcodec/imc.c2
-rw-r--r--libavcodec/on2avc.c2
-rw-r--r--libavcodec/opus.c2
-rw-r--r--libavcodec/wmadec.c3
-rw-r--r--libavcodec/wmaenc.c2
-rw-r--r--libavcodec/wmaprodec.c2
-rw-r--r--libavfilter/af_anequalizer.c1
-rw-r--r--libavfilter/af_compand.c1
-rw-r--r--libavfilter/af_volume.c1
-rw-r--r--libavfilter/f_ebur128.c1
-rw-r--r--libavfilter/vaf_spectrumsynth.c1
-rw-r--r--libavfilter/vsrc_testsrc.c1
-rw-r--r--libavutil/eval.c1
-rw-r--r--libavutil/ffmath.h67
-rw-r--r--libavutil/internal.h36
20 files changed, 85 insertions, 50 deletions
diff --git a/libavcodec/aacenc_utils.h b/libavcodec/aacenc_utils.h
index 07f733746b..bb1dcb4361 100644
--- a/libavcodec/aacenc_utils.h
+++ b/libavcodec/aacenc_utils.h
@@ -28,7 +28,7 @@
#ifndef AVCODEC_AACENC_UTILS_H
#define AVCODEC_AACENC_UTILS_H
-#include "libavutil/internal.h"
+#include "libavutil/ffmath.h"
#include "aac.h"
#include "aacenctab.h"
#include "aactab.h"
diff --git a/libavcodec/aacpsy.c b/libavcodec/aacpsy.c
index 8643fe7036..0898bafd24 100644
--- a/libavcodec/aacpsy.c
+++ b/libavcodec/aacpsy.c
@@ -25,8 +25,7 @@
*/
#include "libavutil/attributes.h"
-#include "libavutil/internal.h"
-#include "libavutil/libm.h"
+#include "libavutil/ffmath.h"
#include "avcodec.h"
#include "aactab.h"
diff --git a/libavcodec/acelp_pitch_delay.c b/libavcodec/acelp_pitch_delay.c
index c2533b1eb1..8ec1ba3a83 100644
--- a/libavcodec/acelp_pitch_delay.c
+++ b/libavcodec/acelp_pitch_delay.c
@@ -21,9 +21,8 @@
*/
#include "libavutil/common.h"
+#include "libavutil/ffmath.h"
#include "libavutil/float_dsp.h"
-#include "libavutil/internal.h"
-#include "libavutil/libm.h"
#include "libavutil/mathematics.h"
#include "avcodec.h"
#include "acelp_pitch_delay.h"
diff --git a/libavcodec/cngdec.c b/libavcodec/cngdec.c
index 0251086042..34f881448d 100644
--- a/libavcodec/cngdec.c
+++ b/libavcodec/cngdec.c
@@ -22,7 +22,7 @@
#include <math.h>
#include "libavutil/common.h"
-#include "libavutil/internal.h"
+#include "libavutil/ffmath.h"
#include "avcodec.h"
#include "celp_filters.h"
#include "internal.h"
diff --git a/libavcodec/dcaenc.c b/libavcodec/dcaenc.c
index 70e92300b6..ab40e37b32 100644
--- a/libavcodec/dcaenc.c
+++ b/libavcodec/dcaenc.c
@@ -24,7 +24,7 @@
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
-#include "libavutil/internal.h"
+#include "libavutil/ffmath.h"
#include "avcodec.h"
#include "dca.h"
#include "dcadata.h"
diff --git a/libavcodec/imc.c b/libavcodec/imc.c
index 085ec09565..850bc9de9a 100644
--- a/libavcodec/imc.c
+++ b/libavcodec/imc.c
@@ -35,9 +35,9 @@
#include <stdio.h>
#include "libavutil/channel_layout.h"
+#include "libavutil/ffmath.h"
#include "libavutil/float_dsp.h"
#include "libavutil/internal.h"
-#include "libavutil/libm.h"
#include "avcodec.h"
#include "bswapdsp.h"
#include "get_bits.h"
diff --git a/libavcodec/on2avc.c b/libavcodec/on2avc.c
index 62c71ccea5..3064c6fc6a 100644
--- a/libavcodec/on2avc.c
+++ b/libavcodec/on2avc.c
@@ -21,8 +21,8 @@
*/
#include "libavutil/channel_layout.h"
+#include "libavutil/ffmath.h"
#include "libavutil/float_dsp.h"
-#include "libavutil/internal.h"
#include "avcodec.h"
#include "bytestream.h"
#include "fft.h"
diff --git a/libavcodec/opus.c b/libavcodec/opus.c
index f2b8ecc411..47f2657204 100644
--- a/libavcodec/opus.c
+++ b/libavcodec/opus.c
@@ -27,7 +27,7 @@
#include <stdint.h>
#include "libavutil/error.h"
-#include "libavutil/internal.h"
+#include "libavutil/ffmath.h"
#include "opus.h"
#include "vorbis.h"
diff --git a/libavcodec/wmadec.c b/libavcodec/wmadec.c
index 1a8432376b..7130bf62cc 100644
--- a/libavcodec/wmadec.c
+++ b/libavcodec/wmadec.c
@@ -34,8 +34,7 @@
*/
#include "libavutil/attributes.h"
-#include "libavutil/internal.h"
-#include "libavutil/libm.h"
+#include "libavutil/ffmath.h"
#include "avcodec.h"
#include "internal.h"
diff --git a/libavcodec/wmaenc.c b/libavcodec/wmaenc.c
index d0727e69b2..418e9586f6 100644
--- a/libavcodec/wmaenc.c
+++ b/libavcodec/wmaenc.c
@@ -20,7 +20,7 @@
*/
#include "libavutil/attributes.h"
-#include "libavutil/internal.h"
+#include "libavutil/ffmath.h"
#include "avcodec.h"
#include "internal.h"
diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c
index 2ea59e9251..2cc1b093fb 100644
--- a/libavcodec/wmaprodec.c
+++ b/libavcodec/wmaprodec.c
@@ -88,8 +88,8 @@
#include <inttypes.h>
+#include "libavutil/ffmath.h"
#include "libavutil/float_dsp.h"
-#include "libavutil/internal.h"
#include "libavutil/intfloat.h"
#include "libavutil/intreadwrite.h"
#include "avcodec.h"
diff --git a/libavfilter/af_anequalizer.c b/libavfilter/af_anequalizer.c
index a344c77535..24034602fd 100644
--- a/libavfilter/af_anequalizer.c
+++ b/libavfilter/af_anequalizer.c
@@ -21,6 +21,7 @@
#include "libavutil/intreadwrite.h"
#include "libavutil/avstring.h"
+#include "libavutil/ffmath.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "avfilter.h"
diff --git a/libavfilter/af_compand.c b/libavfilter/af_compand.c
index b74636409c..0bb719fae5 100644
--- a/libavfilter/af_compand.c
+++ b/libavfilter/af_compand.c
@@ -29,6 +29,7 @@
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
+#include "libavutil/ffmath.h"
#include "libavutil/opt.h"
#include "libavutil/samplefmt.h"
#include "audio.h"
diff --git a/libavfilter/af_volume.c b/libavfilter/af_volume.c
index 3913e7b261..4d6b91645a 100644
--- a/libavfilter/af_volume.c
+++ b/libavfilter/af_volume.c
@@ -27,6 +27,7 @@
#include "libavutil/channel_layout.h"
#include "libavutil/common.h"
#include "libavutil/eval.h"
+#include "libavutil/ffmath.h"
#include "libavutil/float_dsp.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
diff --git a/libavfilter/f_ebur128.c b/libavfilter/f_ebur128.c
index c4b30b4926..59eaedd926 100644
--- a/libavfilter/f_ebur128.c
+++ b/libavfilter/f_ebur128.c
@@ -33,6 +33,7 @@
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/dict.h"
+#include "libavutil/ffmath.h"
#include "libavutil/xga_font_data.h"
#include "libavutil/opt.h"
#include "libavutil/timestamp.h"
diff --git a/libavfilter/vaf_spectrumsynth.c b/libavfilter/vaf_spectrumsynth.c
index 8d4014eae8..ee394b49e3 100644
--- a/libavfilter/vaf_spectrumsynth.c
+++ b/libavfilter/vaf_spectrumsynth.c
@@ -27,6 +27,7 @@
#include "libavcodec/avfft.h"
#include "libavutil/avassert.h"
#include "libavutil/channel_layout.h"
+#include "libavutil/ffmath.h"
#include "libavutil/opt.h"
#include "libavutil/parseutils.h"
#include "avfilter.h"
diff --git a/libavfilter/vsrc_testsrc.c b/libavfilter/vsrc_testsrc.c
index a75dd4c37e..f0c0985964 100644
--- a/libavfilter/vsrc_testsrc.c
+++ b/libavfilter/vsrc_testsrc.c
@@ -37,6 +37,7 @@
#include "libavutil/avassert.h"
#include "libavutil/common.h"
+#include "libavutil/ffmath.h"
#include "libavutil/opt.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
diff --git a/libavutil/eval.c b/libavutil/eval.c
index 2acbbb47d1..37b8511845 100644
--- a/libavutil/eval.c
+++ b/libavutil/eval.c
@@ -31,6 +31,7 @@
#include "avutil.h"
#include "common.h"
#include "eval.h"
+#include "ffmath.h"
#include "internal.h"
#include "log.h"
#include "mathematics.h"
diff --git a/libavutil/ffmath.h b/libavutil/ffmath.h
new file mode 100644
index 0000000000..aad1347f26
--- /dev/null
+++ b/libavutil/ffmath.h
@@ -0,0 +1,67 @@
+/*
+ * copyright (c) 2016 Ganesh Ajjanagadde <gajjanag@gmail.com>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * internal math functions header
+ */
+
+#ifndef AVUTIL_FFMATH_H
+#define AVUTIL_FFMATH_H
+
+#include "attributes.h"
+#include "libm.h"
+
+/**
+ * Compute 10^x for floating point values. Note: this function is by no means
+ * "correctly rounded", and is meant as a fast, reasonably accurate approximation.
+ * For instance, maximum relative error for the double precision variant is
+ * ~ 1e-13 for very small and very large values.
+ * This is ~2x faster than GNU libm's approach, which is still off by 2ulp on
+ * some inputs.
+ * @param x exponent
+ * @return 10^x
+ */
+static av_always_inline double ff_exp10(double x)
+{
+ return exp2(M_LOG2_10 * x);
+}
+
+static av_always_inline float ff_exp10f(float x)
+{
+ return exp2f(M_LOG2_10 * x);
+}
+
+/**
+ * Compute x^y for floating point x, y. Note: this function is faster than the
+ * libm variant due to mainly 2 reasons:
+ * 1. It does not handle any edge cases. In particular, this is only guaranteed
+ * to work correctly for x > 0.
+ * 2. It is not as accurate as a standard nearly "correctly rounded" libm variant.
+ * @param x base
+ * @param y exponent
+ * @return x^y
+ */
+static av_always_inline float ff_fast_powf(float x, float y)
+{
+ return expf(logf(x) * y);
+}
+
+#endif /* AVUTIL_FFMATH_H */
diff --git a/libavutil/internal.h b/libavutil/internal.h
index 340e18bc5d..61784b5128 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -295,42 +295,6 @@ static av_always_inline av_const int64_t ff_rint64_clip(double a, int64_t amin,
}
/**
- * Compute 10^x for floating point values. Note: this function is by no means
- * "correctly rounded", and is meant as a fast, reasonably accurate approximation.
- * For instance, maximum relative error for the double precision variant is
- * ~ 1e-13 for very small and very large values.
- * This is ~2x faster than GNU libm's approach, which is still off by 2ulp on
- * some inputs.
- * @param x exponent
- * @return 10^x
- */
-static av_always_inline double ff_exp10(double x)
-{
- return exp2(M_LOG2_10 * x);
-}
-
-static av_always_inline float ff_exp10f(float x)
-{
- return exp2f(M_LOG2_10 * x);
-}
-
-/**
- * Compute x^y for floating point x, y. Note: this function is faster than the
- * libm variant due to mainly 2 reasons:
- * 1. It does not handle any edge cases. In particular, this is only guaranteed
- * to work correctly for x > 0.
- * 2. It is not as accurate as a standard nearly "correctly rounded" libm variant.
- * @param x base
- * @param y exponent
- * @return x^y
- */
-static av_always_inline float ff_fast_powf(float x, float y)
-{
- return expf(logf(x) * y);
-}
-
-
-/**
* A wrapper for open() setting O_CLOEXEC.
*/
av_warn_unused_result