## ffmpeg / libavutil / mathematics.h @ d71ad089

History | View | Annotate | Download (2.34 KB)

1 | 04d7f601 | Diego Biurrun | ```
/*
``` |
---|---|---|---|

2 | ```
* copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
``` |
||

3 | ```
*
``` |
||

4 | b78e7197 | Diego Biurrun | ```
* This file is part of FFmpeg.
``` |

5 | ```
*
``` |
||

6 | ```
* FFmpeg is free software; you can redistribute it and/or
``` |
||

7 | 04d7f601 | Diego Biurrun | ```
* modify it under the terms of the GNU Lesser General Public
``` |

8 | ```
* License as published by the Free Software Foundation; either
``` |
||

9 | b78e7197 | Diego Biurrun | ```
* version 2.1 of the License, or (at your option) any later version.
``` |

10 | 04d7f601 | Diego Biurrun | ```
*
``` |

11 | b78e7197 | Diego Biurrun | ```
* FFmpeg is distributed in the hope that it will be useful,
``` |

12 | 04d7f601 | Diego Biurrun | ```
* but WITHOUT ANY WARRANTY; without even the implied warranty of
``` |

13 | ```
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
``` |
||

14 | ```
* Lesser General Public License for more details.
``` |
||

15 | ```
*
``` |
||

16 | ```
* You should have received a copy of the GNU Lesser General Public
``` |
||

17 | b78e7197 | Diego Biurrun | ```
* License along with FFmpeg; if not, write to the Free Software
``` |

18 | 04d7f601 | Diego Biurrun | ```
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
``` |

19 | ```
*/
``` |
||

20 | |||

21 | 98790382 | Stefano Sabatini | ```
#ifndef AVUTIL_MATHEMATICS_H
``` |

22 | ```
#define AVUTIL_MATHEMATICS_H
``` |
||

23 | c11c2bc2 | Alexander Strasser | |

24 | 6ef29128 | Diego Biurrun | #include <stdint.h> |

25 | d1a12956 | Aurelien Jacobs | #include <math.h> |

26 | b69201a8 | Diego Biurrun | #include "common.h" |

27 | c11c2bc2 | Alexander Strasser | #include "rational.h" |

28 | |||

29 | d1a12956 | Aurelien Jacobs | ```
#ifndef M_E
``` |

30 | #define M_E 2.7182818284590452354 /* e */ |
||

31 | ```
#endif
``` |
||

32 | ```
#ifndef M_LN2
``` |
||

33 | #define M_LN2 0.69314718055994530942 /* log_e 2 */ |
||

34 | ```
#endif
``` |
||

35 | ```
#ifndef M_LN10
``` |
||

36 | #define M_LN10 2.30258509299404568402 /* log_e 10 */ |
||

37 | ```
#endif
``` |
||

38 | 5af4f1f3 | Aurelien Jacobs | ```
#ifndef M_PI
``` |

39 | #define M_PI 3.14159265358979323846 /* pi */ |
||

40 | ```
#endif
``` |
||

41 | d1a12956 | Aurelien Jacobs | ```
#ifndef M_SQRT1_2
``` |

42 | #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ |
||

43 | ```
#endif
``` |
||

44 | bd41c06f | Måns Rullgård | ```
#ifndef NAN
``` |

45 | #define NAN (0.0/0.0) |
||

46 | ```
#endif
``` |
||

47 | ```
#ifndef INFINITY
``` |
||

48 | #define INFINITY (1.0/0.0) |
||

49 | ```
#endif
``` |
||

50 | d1a12956 | Aurelien Jacobs | |

51 | c11c2bc2 | Alexander Strasser | ```
enum AVRounding {
``` |

52 | 89c9ff50 | Diego Biurrun | AV_ROUND_ZERO = 0, ///< Round toward zero. |

53 | AV_ROUND_INF = 1, ///< Round away from zero. |
||

54 | AV_ROUND_DOWN = 2, ///< Round toward -infinity. |
||

55 | AV_ROUND_UP = 3, ///< Round toward +infinity. |
||

56 | AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. |
||

57 | c11c2bc2 | Alexander Strasser | }; |

58 | |||

59 | 9ce6c138 | Aurelien Jacobs | int64_t av_const av_gcd(int64_t a, int64_t b); |

60 | |||

61 | c11c2bc2 | Alexander Strasser | ```
/**
``` |

62 | 89c9ff50 | Diego Biurrun | ```
* Rescales a 64-bit integer with rounding to nearest.
``` |

63 | ```
* A simple a*b/c isn't possible as it can overflow.
``` |
||

64 | c11c2bc2 | Alexander Strasser | ```
*/
``` |

65 | 85074d3c | Zuxy Meng | int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; |

66 | c11c2bc2 | Alexander Strasser | |

67 | ```
/**
``` |
||

68 | 89c9ff50 | Diego Biurrun | ```
* Rescales a 64-bit integer with specified rounding.
``` |

69 | ```
* A simple a*b/c isn't possible as it can overflow.
``` |
||

70 | c11c2bc2 | Alexander Strasser | ```
*/
``` |

71 | 85074d3c | Zuxy Meng | ```
int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
``` |

72 | c11c2bc2 | Alexander Strasser | |

73 | ```
/**
``` |
||

74 | 89c9ff50 | Diego Biurrun | ```
* Rescales a 64-bit integer by 2 rational numbers.
``` |

75 | c11c2bc2 | Alexander Strasser | ```
*/
``` |

76 | 85074d3c | Zuxy Meng | int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; |

77 | c11c2bc2 | Alexander Strasser | |

78 | 98790382 | Stefano Sabatini | #endif /* AVUTIL_MATHEMATICS_H */ |