36               int64_t num, int64_t den, int64_t max)
    39     int sign = (num < 0) ^ (den < 0);
    43         num = 
FFABS(num) / gcd;
    44         den = 
FFABS(den) / gcd;
    46     if (num <= max && den <= max) {
    52         uint64_t x        = num / den;
    53         int64_t next_den  = num - den * x;
    54         int64_t a2n       = x * 
a1.num + a0.
num;
    55         int64_t a2d       = x * 
a1.den + a0.
den;
    57         if (a2n > max || a2d > max) {
    58             if (
a1.num) x =          (max - a0.
num) / 
a1.num;
    61             if (den * (2 * x * 
a1.den + a0.
den) > num * 
a1.den)
    74     *dst_num = sign ? -
a1.num : 
a1.num;
    84                b.
den * (int64_t) c.
den, INT_MAX);
    97                b.
den * (int64_t) c.
den, INT_MAX);
   113     if (fabs(d) > INT_MAX + 3LL)
   116     exponent = 
FFMAX(exponent-1, 0);
   117     den = 1LL << (61 - exponent);
   121     if ((!a.
num || !a.
den) && d && max>0 && max<INT_MAX)
   130     int64_t 
a = q1.
num * (int64_t)q2.
den + q2.
num * (int64_t)q1.
den;
   131     int64_t 
b = 2 * (int64_t)q1.
den * q2.
den;
   144     int i, nearest_q_idx = 0;
   145     for (i = 0; q_list[i].
den; i++)
   146         if (
av_nearer_q(q, q_list[i], q_list[nearest_q_idx]) > 0)
   149     return nearest_q_idx;
   166     if (!q.
num && !q.
den) 
return 0xFFC00000;
   167     if (!q.
num) 
return 0;
   168     if (!q.
den) 
return 0x7F800000 | (q.
num & 0x80000000);
   174     shift -= n >= (1<<24);
   175     shift += n <  (1<<23);
   183     return sign<<31 | (150-
shift)<<23 | (n - (1<<23));
 static int shift(int a, int b)
AVRational av_div_q(AVRational b, AVRational c)
Divide one rational by another. 
static const uint8_t q1[256]
uint32_t av_q2intfloat(AVRational q)
Convert an AVRational to a IEEE 32-bit float expressed in fixed-point format. 
AVRational av_sub_q(AVRational b, AVRational c)
Subtract one rational from another. 
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code. 
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction. 
simple assert() macros that are a bit more flexible than ISO C assert(). 
int64_t av_gcd(int64_t a, int64_t b)
Compute the greatest common divisor of two integer operands. 
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code. 
int64_t av_rescale(int64_t a, int64_t b, int64_t c)
Rescale a 64-bit integer with rounding to nearest. 
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd)
Rescale a 64-bit integer with specified rounding. 
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. 
Rational number (pair of numerator and denominator). 
AVRational av_d2q(double d, int max)
Convert a double precision floating point number to a rational. 
static int av_cmp_q(AVRational a, AVRational b)
Compare two rationals. 
common internal and external API header 
Utilties for rational number calculation. 
AVRational av_add_q(AVRational b, AVRational c)
Add two rationals. 
int av_nearer_q(AVRational q, AVRational q1, AVRational q2)
Find which of the two rationals is closer to another rational. 
AVRational av_mul_q(AVRational b, AVRational c)
Multiply two rationals.