From b90b1b4c3c519d66146cf8a3ae16ba4c245f0a72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Tue, 9 Mar 2010 01:19:28 +0000 Subject: [PATCH] Fix build on configurations without fast av_log2() This is a bit hackish. I will try to think of something nicer, but this will do for now. Originally committed as revision 22366 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavutil/common.h | 23 +++++++++++++---------- libavutil/intmath.h | 19 ++++++++++++++++++- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/libavutil/common.h b/libavutil/common.h index 3f81de4f00..fae0b5b09b 100644 --- a/libavutil/common.h +++ b/libavutil/common.h @@ -36,11 +36,6 @@ #include #include "attributes.h" -#ifdef HAVE_AV_CONFIG_H -# include "config.h" -# include "intmath.h" -#endif - //rounded division & shift #define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) /* assume b>0 */ @@ -62,8 +57,7 @@ extern const uint8_t ff_log2_tab[256]; extern const uint8_t av_reverse[256]; -#ifndef av_log2 -static inline av_const int av_log2(unsigned int v) +static inline av_const int av_log2_c(unsigned int v) { int n = 0; if (v & 0xffff0000) { @@ -78,10 +72,8 @@ static inline av_const int av_log2(unsigned int v) return n; } -#endif -#ifndef av_log2_16bit -static inline av_const int av_log2_16bit(unsigned int v) +static inline av_const int av_log2_16bit_c(unsigned int v) { int n = 0; if (v & 0xff00) { @@ -92,6 +84,17 @@ static inline av_const int av_log2_16bit(unsigned int v) return n; } + +#ifdef HAVE_AV_CONFIG_H +# include "config.h" +# include "intmath.h" +#endif + +#ifndef av_log2 +# define av_log2 av_log2_c +#endif +#ifndef av_log2_16bit +# define av_log2_16bit av_log2_16bit_c #endif /** diff --git a/libavutil/intmath.h b/libavutil/intmath.h index 02870cb282..95ee1ff65c 100644 --- a/libavutil/intmath.h +++ b/libavutil/intmath.h @@ -21,8 +21,9 @@ #ifndef AVUTIL_INTMATH_H #define AVUTIL_INTMATH_H +#include #include "config.h" -#include "common.h" +#include "attributes.h" extern const uint32_t ff_inverse[257]; @@ -56,6 +57,22 @@ extern const uint32_t ff_inverse[257]; #endif /* FASTDIV */ +/* + * Get definition of av_log2_c from common.h. In the event we got + * here through common.h including this file, including it again will + * be a no-op due to multi-inclusion guards, so we must duplicate the + * fallback defines here. + */ + +#include "common.h" + +#ifndef av_log2 +# define av_log2 av_log2_c +#endif +#ifndef av_log2_16bit +# define av_log2_16bit av_log2_16bit_c +#endif + extern const uint8_t ff_sqrt_tab[256]; static inline av_const unsigned int ff_sqrt(unsigned int a)