X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Frational.c;h=eb148ddb12cc3df93e969a681ece54a2780a7b19;hb=1c7f252783aec37e4ff8049476386f63afe91756;hp=35ee08877f3497379d383b06a7c424a1c940d1cd;hpb=e427ba5c68a522b26a45bf7c61016d9349fab43d;p=ffmpeg diff --git a/libavutil/rational.c b/libavutil/rational.c index 35ee08877f3..eb148ddb12c 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; +}