Rational number calculation.
More...
|
| file | rational.h |
| | Utilties for rational number calculation.
|
| |
|
| static AVRational | av_make_q (int num, int den) |
| | Create an AVRational. More...
|
| |
| static int | av_cmp_q (AVRational a, AVRational b) |
| | Compare two rationals. More...
|
| |
| static double | av_q2d (AVRational a) |
| | Convert an AVRational to a double. More...
|
| |
| int | av_reduce (int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max) |
| | Reduce a fraction. More...
|
| |
| AVRational | av_mul_q (AVRational b, AVRational c) av_const |
| | Multiply two rationals. More...
|
| |
| AVRational | av_div_q (AVRational b, AVRational c) av_const |
| | Divide one rational by another. More...
|
| |
| AVRational | av_add_q (AVRational b, AVRational c) av_const |
| | Add two rationals. More...
|
| |
| AVRational | av_sub_q (AVRational b, AVRational c) av_const |
| | Subtract one rational from another. More...
|
| |
| static av_always_inline AVRational | av_inv_q (AVRational q) |
| | Invert a rational. More...
|
| |
| AVRational | av_d2q (double d, int max) av_const |
| | Convert a double precision floating point number to a rational. More...
|
| |
| int | av_nearer_q (AVRational q, AVRational q1, AVRational q2) |
| | Find which of the two rationals is closer to another rational. More...
|
| |
| int | av_find_nearest_q_idx (AVRational q, const AVRational *q_list) |
| | Find the value in a list of rationals nearest a given reference rational. More...
|
| |
| uint32_t | av_q2intfloat (AVRational q) |
| | Convert an AVRational to a IEEE 32-bit float expressed in fixed-point format. More...
|
| |
Rational number calculation.
While rational numbers can be expressed as floating-point numbers, the conversion process is a lossy one, so are floating-point operations. On the other hand, the nature of FFmpeg demands highly accurate calculation of timestamps. This set of rational number utilities serves as a generic interface for manipulating rational numbers as pairs of numerators and denominators.
Many of the functions that operate on AVRational's have the suffix _q, in reference to the mathematical symbol "ℚ" (Q) which denotes the set of all rational numbers.
◆ av_make_q()
Create an AVRational.
Useful for compilers that do not support compound literals.
- Note
- The return value is not reduced.
- See also
- av_reduce()
Definition at line 71 of file rational.h.
◆ av_cmp_q()
Compare two rationals.
- Parameters
-
| a | First rational |
| b | Second rational |
- Returns
- One of the following values:
- 0 if
a == b
- 1 if
a > b
- -1 if
a < b
INT_MIN if one of the values is of the form 0 / 0
Definition at line 89 of file rational.h.
◆ av_q2d()
◆ av_reduce()
| int av_reduce |
( |
int * |
dst_num, |
|
|
int * |
dst_den, |
|
|
int64_t |
num, |
|
|
int64_t |
den, |
|
|
int64_t |
max |
|
) |
| |
Reduce a fraction.
This is useful for framerate calculations.
- Parameters
-
| [out] | dst_num | Destination numerator |
| [out] | dst_den | Destination denominator |
| [in] | num | Source numerator |
| [in] | den | Source denominator |
| [in] | max | Maximum allowed values for dst_num & dst_den |
- Returns
- 1 if the operation is exact, 0 otherwise
◆ av_mul_q()
Multiply two rationals.
- Parameters
-
| b | First rational |
| c | Second rational |
- Returns
- b*c
◆ av_div_q()
Divide one rational by another.
- Parameters
-
| b | First rational |
| c | Second rational |
- Returns
- b/c
◆ av_add_q()
Add two rationals.
- Parameters
-
| b | First rational |
| c | Second rational |
- Returns
- b+c
◆ av_sub_q()
Subtract one rational from another.
- Parameters
-
| b | First rational |
| c | Second rational |
- Returns
- b-c
◆ av_inv_q()
◆ av_d2q()
Convert a double precision floating point number to a rational.
In case of infinity, the returned value is expressed as {1, 0} or {-1, 0} depending on the sign.
- Parameters
-
| d | double to convert |
| max | Maximum allowed numerator and denominator |
- Returns
d in AVRational form
- See also
- av_q2d()
Referenced by av_inv_q().
◆ av_nearer_q()
Find which of the two rationals is closer to another rational.
- Parameters
-
| q | Rational to be compared against |
| q1,q2 | Rationals to be tested |
- Returns
- One of the following values:
- 1 if
q1 is nearer to q than q2
- -1 if
q2 is nearer to q than q1
- 0 if they have the same distance
Referenced by av_inv_q().
◆ av_find_nearest_q_idx()
Find the value in a list of rationals nearest a given reference rational.
- Parameters
-
| q | Reference rational |
| q_list | Array of rationals terminated by {0, 0} |
- Returns
- Index of the nearest value found in the array
Referenced by av_inv_q().
◆ av_q2intfloat()
Convert an AVRational to a IEEE 32-bit float expressed in fixed-point format.
- Parameters
-
| q | Rational to be converted |
- Returns
- Equivalent floating-point value, expressed as an unsigned 32-bit integer.
- Note
- The returned value is platform-indepedant.
Referenced by av_inv_q().