|
| static AVRational | av_make_q (int num, int den) |
| | Create an AVRational.
|
| static int | av_cmp_q (AVRational a, AVRational b) |
| | Compare two rationals.
|
| static double | av_q2d (AVRational a) |
| | Convert an AVRational to a double.
|
| int | av_reduce (int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max) |
| | Reduce a fraction.
|
| AVRational | av_mul_q (AVRational b, AVRational c) av_const |
| | Multiply two rationals.
|
| AVRational | av_div_q (AVRational b, AVRational c) av_const |
| | Divide one rational by another.
|
| AVRational | av_add_q (AVRational b, AVRational c) av_const |
| | Add two rationals.
|
| AVRational | av_sub_q (AVRational b, AVRational c) av_const |
| | Subtract one rational from another.
|
| static av_always_inline AVRational | av_inv_q (AVRational q) |
| | Invert a rational.
|
| AVRational | av_d2q (double d, int max) av_const |
| | Convert a double precision floating point number to a rational.
|
| int | av_nearer_q (AVRational q, AVRational q1, AVRational q2) |
| | Find which of the two rationals is closer to another rational.
|
| 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.
|
| uint32_t | av_q2intfloat (AVRational q) |
| | Convert an AVRational to a IEEE 32-bit float expressed in fixed-point format.
|
| AVRational | av_gcd_q (AVRational a, AVRational b, int max_den, AVRational def) |
| | Return the best rational so that a and b are multiple of it.
|
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.
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.
In general rational numbers with |num| <= 1<<26 && |den| <= 1<<26 can be recovered exactly from their double representation. (no exceptions were found within 1B random ones)
- Parameters
-
| d | double to convert |
| max | Maximum allowed numerator and denominator |
- Returns
- d in AVRational form
- See also
- av_q2d()
- Examples
- qsv_transcode.c.
Referenced by dec_enc(), and dynamic_set_parameter().