X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Frational.c;h=eb148ddb12cc3df93e969a681ece54a2780a7b19;hb=c2649d5196843db46d25a9f9f6f9272a464221b7;hp=35ee08877f3497379d383b06a7c424a1c940d1cd;hpb=f05f210526a3dc2d9fa6b1c228e3907ebd1d43c6;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; +}