summaryrefslogtreecommitdiff
path: root/libavutil/rational.c
diff options
context:
space:
mode:
authorNicolas George <george@nsup.org>2020-04-16 21:36:00 +0200
committerNicolas George <george@nsup.org>2020-05-23 15:51:44 +0200
commit6b65c4ec54511871f345cfa76a499fa65d94c0b8 (patch)
tree189dc349ae343acf78b1b05de630a0bfb200b545 /libavutil/rational.c
parentbeb98c0181b70c0d32cf19efe2a78d2c397b2508 (diff)
downloadffmpeg-6b65c4ec54511871f345cfa76a499fa65d94c0b8.tar.gz
lavu: add av_gcd_q().
Diffstat (limited to 'libavutil/rational.c')
-rw-r--r--libavutil/rational.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libavutil/rational.c b/libavutil/rational.c
index 35ee08877f..eb148ddb12 100644
--- a/libavutil/rational.c
+++ b/libavutil/rational.c
@@ -182,3 +182,12 @@ uint32_t av_q2intfloat(AVRational q) {
return sign<<31 | (150-shift)<<23 | (n - (1<<23));
}
+
+AVRational av_gcd_q(AVRational a, AVRational b, int max_den, AVRational def)
+{
+ int64_t gcd, lcm;
+
+ gcd = av_gcd(a.den, b.den);
+ lcm = (a.den / gcd) * b.den;
+ return lcm < max_den ? av_make_q(av_gcd(a.num, b.num), lcm) : def;
+}