From c11c2bc20b0d2ca85ac4aed937daf5d65316cf7b Mon Sep 17 00:00:00 2001 From: Alexander Strasser Date: Mon, 1 Aug 2005 20:07:05 +0000 Subject: libavutil: Utility code from libavcodec moved to a separate library. Originally committed as revision 4489 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/mathematics.h | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 libavutil/mathematics.h (limited to 'libavutil/mathematics.h') diff --git a/libavutil/mathematics.h b/libavutil/mathematics.h new file mode 100644 index 0000000000..0cf726cbe9 --- /dev/null +++ b/libavutil/mathematics.h @@ -0,0 +1,31 @@ +#ifndef MATHEMATICS_H +#define MATHEMATICS_H + +#include "rational.h" + +enum AVRounding { + AV_ROUND_ZERO = 0, ///< round toward zero + AV_ROUND_INF = 1, ///< round away from zero + AV_ROUND_DOWN = 2, ///< round toward -infinity + AV_ROUND_UP = 3, ///< round toward +infinity + AV_ROUND_NEAR_INF = 5, ///< round to nearest and halfway cases away from zero +}; + +/** + * rescale a 64bit integer with rounding to nearest. + * a simple a*b/c isn't possible as it can overflow + */ +int64_t av_rescale(int64_t a, int64_t b, int64_t c); + +/** + * rescale a 64bit integer with specified rounding. + * a simple a*b/c isn't possible as it can overflow + */ +int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding); + +/** + * rescale a 64bit integer by 2 rational numbers. + */ +int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq); + +#endif /* MATHEMATICS_H */ -- cgit v1.2.3