TODO APIchanges and minor bump. Signed-off-by: Nicolas George <geo...@nsup.org> --- libavutil/rational.c | 9 +++++++++ libavutil/rational.h | 6 ++++++ 2 files changed, 15 insertions(+)
This one too, I need for the code I am writing. And lavfi/avf_concat could use it too to choose a better time base. 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; +} diff --git a/libavutil/rational.h b/libavutil/rational.h index 5c6b67b4e9..cbb08a0baf 100644 --- a/libavutil/rational.h +++ b/libavutil/rational.h @@ -207,6 +207,12 @@ int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); */ uint32_t av_q2intfloat(AVRational q); +/** + * Return the best rational so that a and b are multiple of it. + * If the resulting denominator is larger than max_den, return def. + */ +AVRational av_gcd_q(AVRational a, AVRational b, int max_den, AVRational def); + /** * @} */ -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".