00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef AVUTIL_MATHEMATICS_H
00022 #define AVUTIL_MATHEMATICS_H
00023
00024 #include <stdint.h>
00025 #include <math.h>
00026 #include "attributes.h"
00027 #include "rational.h"
00028
00029 #ifndef M_E
00030 #define M_E 2.7182818284590452354
00031 #endif
00032 #ifndef M_LN2
00033 #define M_LN2 0.69314718055994530942
00034 #endif
00035 #ifndef M_LN10
00036 #define M_LN10 2.30258509299404568402
00037 #endif
00038 #ifndef M_LOG2_10
00039 #define M_LOG2_10 3.32192809488736234787
00040 #endif
00041 #ifndef M_PHI
00042 #define M_PHI 1.61803398874989484820
00043 #endif
00044 #ifndef M_PI
00045 #define M_PI 3.14159265358979323846
00046 #endif
00047 #ifndef M_SQRT1_2
00048 #define M_SQRT1_2 0.70710678118654752440
00049 #endif
00050 #ifndef M_SQRT2
00051 #define M_SQRT2 1.41421356237309504880
00052 #endif
00053 #ifndef NAN
00054 #define NAN (0.0/0.0)
00055 #endif
00056 #ifndef INFINITY
00057 #define INFINITY (1.0/0.0)
00058 #endif
00059
00066 enum AVRounding {
00067 AV_ROUND_ZERO = 0,
00068 AV_ROUND_INF = 1,
00069 AV_ROUND_DOWN = 2,
00070 AV_ROUND_UP = 3,
00071 AV_ROUND_NEAR_INF = 5,
00072 };
00073
00079 int64_t av_const av_gcd(int64_t a, int64_t b);
00080
00085 int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
00086
00091 int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
00092
00096 int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;
00097
00101 int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq,
00102 enum AVRounding) av_const;
00103
00110 int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
00111
00122 int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
00123
00128 #endif