#include "avcodec.h"
#include "rational.h"
+/**
+ * returns b*c.
+ */
AVRational av_mul_q(AVRational b, AVRational c){
av_reduce(&b.num, &b.den, b.num * (int64_t)c.num, b.den * (int64_t)c.den, INT_MAX);
return b;
}
+/**
+ * returns b/c.
+ */
AVRational av_div_q(AVRational b, AVRational c){
av_reduce(&b.num, &b.den, b.num * (int64_t)c.den, b.den * (int64_t)c.num, INT_MAX);
return b;
}
+/**
+ * returns b+c.
+ */
AVRational av_add_q(AVRational b, AVRational c){
av_reduce(&b.num, &b.den, b.num * (int64_t)c.den + c.num * (int64_t)b.den, b.den * (int64_t)c.den, INT_MAX);
return b;
}
+/**
+ * returns b-c.
+ */
AVRational av_sub_q(AVRational b, AVRational c){
av_reduce(&b.num, &b.den, b.num * (int64_t)c.den - c.num * (int64_t)b.den, b.den * (int64_t)c.den, INT_MAX);
return b;
}
+/**
+ * Converts a double precission floating point number to a AVRational.
+ * @param max the maximum allowed numerator and denominator
+ */
AVRational av_d2q(double d, int max){
AVRational a;
int exponent= FFMAX( (int)(log(ABS(d) + 1e-20)/log(2)), 0);