[FFmpeg-devel] FASTDIV macro

Måns Rullgård mans
Sat Nov 8 22:49:24 CET 2008


libavutil/internal.h defines a macro, FASTDIV(), for fast 32/16-bit
division my means of multiplying by a table value.  If the
architecture is not ARM or x86, which have asm versions, this macro is
defined as a normal division if CONFIG_FASTDIV is not set.  The odd
thing is, nothing ever sets CONFIG_FASTDIV.  Something is clearly not
right here.

I see these alternatives to fix it:

1. Always use the table multiplication.
2. Enable CONFIG_FASTDIV by default.
3. Disable CONFIG_FASTDIV by default, adding configure option to
   enable.
4. Always use plain division if no asm available.

Opinions?

There is also a question of where this macro belongs.  It uses a table
defined in lavc, and its only use outside lavc is in ff_sqrt(), which
is only used in lavc.  Would it make sense to move these to
lavc/mathops.h, where other similar macros are defined?
Alternatively, mathops.h could be moved to lavu.  I'd like it to be
consistent.  The same goes for a number of other macros of this type.

-- 
M?ns Rullg?rd
mans at mansr.com




More information about the ffmpeg-devel mailing list