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
release/0.6
Måns Rullgård 15 years ago
parent 08a186c648
commit b90b1b4c3c
  1. 23
      libavutil/common.h
  2. 19
      libavutil/intmath.h

@ -36,11 +36,6 @@
#include <string.h> #include <string.h>
#include "attributes.h" #include "attributes.h"
#ifdef HAVE_AV_CONFIG_H
# include "config.h"
# include "intmath.h"
#endif
//rounded division & shift //rounded division & shift
#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) #define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
/* assume b>0 */ /* assume b>0 */
@ -62,8 +57,7 @@ extern const uint8_t ff_log2_tab[256];
extern const uint8_t av_reverse[256]; extern const uint8_t av_reverse[256];
#ifndef av_log2 static inline av_const int av_log2_c(unsigned int v)
static inline av_const int av_log2(unsigned int v)
{ {
int n = 0; int n = 0;
if (v & 0xffff0000) { if (v & 0xffff0000) {
@ -78,10 +72,8 @@ static inline av_const int av_log2(unsigned int v)
return n; return n;
} }
#endif
#ifndef av_log2_16bit static inline av_const int av_log2_16bit_c(unsigned int v)
static inline av_const int av_log2_16bit(unsigned int v)
{ {
int n = 0; int n = 0;
if (v & 0xff00) { if (v & 0xff00) {
@ -92,6 +84,17 @@ static inline av_const int av_log2_16bit(unsigned int v)
return n; 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 #endif
/** /**

@ -21,8 +21,9 @@
#ifndef AVUTIL_INTMATH_H #ifndef AVUTIL_INTMATH_H
#define AVUTIL_INTMATH_H #define AVUTIL_INTMATH_H
#include <stdint.h>
#include "config.h" #include "config.h"
#include "common.h" #include "attributes.h"
extern const uint32_t ff_inverse[257]; extern const uint32_t ff_inverse[257];
@ -56,6 +57,22 @@ extern const uint32_t ff_inverse[257];
#endif /* FASTDIV */ #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]; extern const uint8_t ff_sqrt_tab[256];
static inline av_const unsigned int ff_sqrt(unsigned int a) static inline av_const unsigned int ff_sqrt(unsigned int a)

Loading…
Cancel
Save