| OLD | NEW | 
|   1 /* |   1 /* | 
|   2  * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> |   2  * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> | 
|   3  * |   3  * | 
|   4  * This file is part of FFmpeg. |   4  * This file is part of FFmpeg. | 
|   5  * |   5  * | 
|   6  * FFmpeg is free software; you can redistribute it and/or |   6  * FFmpeg is free software; you can redistribute it and/or | 
|   7  * modify it under the terms of the GNU Lesser General Public |   7  * modify it under the terms of the GNU Lesser General Public | 
|   8  * License as published by the Free Software Foundation; either |   8  * License as published by the Free Software Foundation; either | 
|   9  * version 2.1 of the License, or (at your option) any later version. |   9  * version 2.1 of the License, or (at your option) any later version. | 
|  10  * |  10  * | 
|  11  * FFmpeg is distributed in the hope that it will be useful, |  11  * FFmpeg is distributed in the hope that it will be useful, | 
|  12  * but WITHOUT ANY WARRANTY; without even the implied warranty of |  12  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU |  13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  14  * Lesser General Public License for more details. |  14  * Lesser General Public License for more details. | 
|  15  * |  15  * | 
|  16  * You should have received a copy of the GNU Lesser General Public |  16  * You should have received a copy of the GNU Lesser General Public | 
|  17  * License along with FFmpeg; if not, write to the Free Software |  17  * License along with FFmpeg; if not, write to the Free Software | 
|  18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |  18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 
|  19  */ |  19  */ | 
|  20  |  20  | 
|  21 #ifndef AVUTIL_MATHEMATICS_H |  21 #ifndef AVUTIL_MATHEMATICS_H | 
|  22 #define AVUTIL_MATHEMATICS_H |  22 #define AVUTIL_MATHEMATICS_H | 
|  23  |  23  | 
|  24 #include <stdint.h> |  24 #include <stdint.h> | 
|  25 #include <math.h> |  25 #include <math.h> | 
 |  26 #include "common.h" | 
|  26 #include "rational.h" |  27 #include "rational.h" | 
|  27  |  28  | 
|  28 #ifndef M_E |  29 #ifndef M_E | 
|  29 #define M_E            2.7182818284590452354   /* e */ |  30 #define M_E            2.7182818284590452354   /* e */ | 
|  30 #endif |  31 #endif | 
|  31 #ifndef M_LN2 |  32 #ifndef M_LN2 | 
|  32 #define M_LN2          0.69314718055994530942  /* log_e 2 */ |  33 #define M_LN2          0.69314718055994530942  /* log_e 2 */ | 
|  33 #endif |  34 #endif | 
|  34 #ifndef M_LN10 |  35 #ifndef M_LN10 | 
|  35 #define M_LN10         2.30258509299404568402  /* log_e 10 */ |  36 #define M_LN10         2.30258509299404568402  /* log_e 10 */ | 
|  36 #endif |  37 #endif | 
|  37 #ifndef M_PI |  38 #ifndef M_PI | 
|  38 #define M_PI           3.14159265358979323846  /* pi */ |  39 #define M_PI           3.14159265358979323846  /* pi */ | 
|  39 #endif |  40 #endif | 
|  40 #ifndef M_SQRT1_2 |  41 #ifndef M_SQRT1_2 | 
|  41 #define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */ |  42 #define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */ | 
|  42 #endif |  43 #endif | 
|  43  |  44  | 
|  44 enum AVRounding { |  45 enum AVRounding { | 
|  45     AV_ROUND_ZERO     = 0, ///< round toward zero |  46     AV_ROUND_ZERO     = 0, ///< Round toward zero. | 
|  46     AV_ROUND_INF      = 1, ///< round away from zero |  47     AV_ROUND_INF      = 1, ///< Round away from zero. | 
|  47     AV_ROUND_DOWN     = 2, ///< round toward -infinity |  48     AV_ROUND_DOWN     = 2, ///< Round toward -infinity. | 
|  48     AV_ROUND_UP       = 3, ///< round toward +infinity |  49     AV_ROUND_UP       = 3, ///< Round toward +infinity. | 
|  49     AV_ROUND_NEAR_INF = 5, ///< round to nearest and halfway cases away from zer
    o |  50     AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zer
    o. | 
|  50 }; |  51 }; | 
|  51  |  52  | 
 |  53 int64_t av_const av_gcd(int64_t a, int64_t b); | 
 |  54  | 
|  52 /** |  55 /** | 
|  53  * rescale a 64bit integer with rounding to nearest. |  56  * Rescales a 64-bit integer with rounding to nearest. | 
|  54  * a simple a*b/c isn't possible as it can overflow |  57  * A simple a*b/c isn't possible as it can overflow. | 
|  55  */ |  58  */ | 
|  56 int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; |  59 int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; | 
|  57  |  60  | 
|  58 /** |  61 /** | 
|  59  * rescale a 64bit integer with specified rounding. |  62  * Rescales a 64-bit integer with specified rounding. | 
|  60  * a simple a*b/c isn't possible as it can overflow |  63  * A simple a*b/c isn't possible as it can overflow. | 
|  61  */ |  64  */ | 
|  62 int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_cons
    t; |  65 int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_cons
    t; | 
|  63  |  66  | 
|  64 /** |  67 /** | 
|  65  * rescale a 64bit integer by 2 rational numbers. |  68  * Rescales a 64-bit integer by 2 rational numbers. | 
|  66  */ |  69  */ | 
|  67 int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; |  70 int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; | 
|  68  |  71  | 
|  69 #endif /* AVUTIL_MATHEMATICS_H */ |  72 #endif /* AVUTIL_MATHEMATICS_H */ | 
| OLD | NEW |