Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc)
{
int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc)
{
if (inc != 1)
inc_tb = av_mul_q(inc_tb, (AVRational) {inc, 1});
if (inc != 1)
inc_tb = av_mul_q(inc_tb, (AVRational) {inc, 1});
+ m = inc_tb.num * (int64_t)ts_tb.den;
+ d = inc_tb.den * (int64_t)ts_tb.num;
+
+ if (m % d == 0)
+ return ts + m / d;
+
if (av_cmp_q(inc_tb, ts_tb) < 0) {
//increase step is too small for even 1 step to be representable
return ts;
if (av_cmp_q(inc_tb, ts_tb) < 0) {
//increase step is too small for even 1 step to be representable
return ts;