On Thu, Oct 29, 2015 at 12:20 AM, Ganesh Ajjanagadde <gajjanaga...@gmail.com> wrote: > This simplifies and cleans up the code. > Furthermore, it is much faster due to absence of the slow log computation. > > Signed-off-by: Ganesh Ajjanagadde <gajjanaga...@gmail.com> > --- > libavutil/rational.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libavutil/rational.c b/libavutil/rational.c > index 21d2bb7..81a9402 100644 > --- a/libavutil/rational.c > +++ b/libavutil/rational.c > @@ -106,14 +106,14 @@ AVRational av_sub_q(AVRational b, AVRational c) > AVRational av_d2q(double d, int max) > { > AVRational a; > -#define LOG2 0.69314718055994530941723212145817656807550013436025 > int exponent; > int64_t den; > if (isnan(d)) > return (AVRational) { 0,0 }; > if (fabs(d) > INT_MAX + 3LL) > return (AVRational) { d < 0 ? -1 : 1, 0 }; > - exponent = FFMAX( (int)(log(fabs(d) + 1e-20)/LOG2), 0); > + frexp(d, &exponent); > + exponent = FFMAX(exponent-1, 0); > den = 1LL << (61 - exponent); > // (int64_t)rint() and llrint() do not work with gcc on ia64 and sparc64 > av_reduce(&a.num, &a.den, floor(d * den + 0.5), den, max); > -- > 2.6.2 >
Just a note, so that this is not buried: wm4's comment (which I still disagree with) does not apply to this patch. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel