annotate mathematics.h @ 727:98b64f65be0d libavutil

Reorganise intreadwrite.h This changes intreadwrite.h to support per-arch implementations of the various macros allowing us to take advantage of special instructions or other properties the compiler does not know about.
author mru
date Sat, 18 Apr 2009 00:00:22 +0000
parents 68cd367b853a
children 839b4855bb03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
1 /*
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
2 * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
3 *
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
4 * This file is part of FFmpeg.
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
5 *
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
8 * License as published by the Free Software Foundation; either
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
10 *
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
14 * Lesser General Public License for more details.
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
15 *
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
19 */
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 0
diff changeset
20
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 548
diff changeset
21 #ifndef AVUTIL_MATHEMATICS_H
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 548
diff changeset
22 #define AVUTIL_MATHEMATICS_H
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
23
468
b76b4c3a5dde Add missing stdint.h #include to headers that use it.
diego
parents: 392
diff changeset
24 #include <stdint.h>
547
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
25 #include <math.h>
634
68cd367b853a Add common.h #include, necessary for av_const.
diego
parents: 633
diff changeset
26 #include "common.h"
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
27 #include "rational.h"
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
28
547
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
29 #ifndef M_E
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
30 #define M_E 2.7182818284590452354 /* e */
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
31 #endif
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
32 #ifndef M_LN2
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
33 #define M_LN2 0.69314718055994530942 /* log_e 2 */
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
34 #endif
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
35 #ifndef M_LN10
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
36 #define M_LN10 2.30258509299404568402 /* log_e 10 */
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
37 #endif
548
8d46104adf83 move M_PI definition along with other math definitions
aurel
parents: 547
diff changeset
38 #ifndef M_PI
8d46104adf83 move M_PI definition along with other math definitions
aurel
parents: 547
diff changeset
39 #define M_PI 3.14159265358979323846 /* pi */
8d46104adf83 move M_PI definition along with other math definitions
aurel
parents: 547
diff changeset
40 #endif
547
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
41 #ifndef M_SQRT1_2
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
42 #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
43 #endif
3f9f807b86a4 define some math constants so as not to depend on _XOPEN_SOURCE
aurel
parents: 481
diff changeset
44
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
45 enum AVRounding {
633
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
46 AV_ROUND_ZERO = 0, ///< Round toward zero.
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
47 AV_ROUND_INF = 1, ///< Round away from zero.
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
48 AV_ROUND_DOWN = 2, ///< Round toward -infinity.
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
49 AV_ROUND_UP = 3, ///< Round toward +infinity.
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
50 AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero.
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
51 };
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
52
607
819752f80c64 export gcd function as av_gcd()
aurel
parents: 567
diff changeset
53 int64_t av_const av_gcd(int64_t a, int64_t b);
819752f80c64 export gcd function as av_gcd()
aurel
parents: 567
diff changeset
54
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
55 /**
633
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
56 * Rescales a 64-bit integer with rounding to nearest.
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
57 * A simple a*b/c isn't possible as it can overflow.
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
58 */
481
f4187c1c15a6 Reapply r12489: Add pure, const and malloc attributes to proper functions
zuxy
parents: 478
diff changeset
59 int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
60
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
61 /**
633
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
62 * Rescales a 64-bit integer with specified rounding.
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
63 * A simple a*b/c isn't possible as it can overflow.
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
64 */
481
f4187c1c15a6 Reapply r12489: Add pure, const and malloc attributes to proper functions
zuxy
parents: 478
diff changeset
65 int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const;
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
66
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
67 /**
633
8c48a1b999a3 spelling/grammar/consistency review part I
diego
parents: 607
diff changeset
68 * Rescales a 64-bit integer by 2 rational numbers.
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
69 */
481
f4187c1c15a6 Reapply r12489: Add pure, const and malloc attributes to proper functions
zuxy
parents: 478
diff changeset
70 int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;
0
ee8f44bb7c4d libavutil: Utility code from libavcodec moved to a separate library.
al
parents:
diff changeset
71
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 548
diff changeset
72 #endif /* AVUTIL_MATHEMATICS_H */