-extern const uint32_t ff_inverse[256];
-
-#if defined(ARCH_X86)
-# define FASTDIV(a,b) \
- ({\
- int ret,dmy;\
- asm volatile(\
- "mull %3"\
- :"=d"(ret),"=a"(dmy)\
- :"1"(a),"g"(ff_inverse[b])\
- );\
- ret;\
- })
-#elif defined(HAVE_ARMV6)
-static inline av_const int FASTDIV(int a, int b)
-{
- int r;
- asm volatile("cmp %2, #0 \n\t"
- "smmul %0, %1, %2 \n\t"
- "rsblt %0, %0, #0 \n\t"
- : "=r"(r) : "r"(a), "r"(ff_inverse[b]));
- return r;
-}
-#elif defined(ARCH_ARMV4L)
-# define FASTDIV(a,b) \
- ({\
- int ret,dmy;\
- asm volatile(\
- "umull %1, %0, %2, %3"\
- :"=&r"(ret),"=&r"(dmy)\
- :"r"(a),"r"(ff_inverse[b])\
- );\
- ret;\
- })
-#elif defined(CONFIG_FASTDIV)
-# define FASTDIV(a,b) ((uint32_t)((((uint64_t)a)*ff_inverse[b])>>32))
-#else
-# define FASTDIV(a,b) ((a)/(b))
-#endif
-
-extern const uint8_t ff_sqrt_tab[256];
-
-static inline int av_log2_16bit(unsigned int v);
-
-static inline av_const unsigned int ff_sqrt(unsigned int a)
-{
- unsigned int b;
-
- if(a<255) return (ff_sqrt_tab[a+1]-1)>>4;
- else if(a<(1<<12)) b= ff_sqrt_tab[a>>4 ]>>2;
-#ifndef CONFIG_SMALL
- else if(a<(1<<14)) b= ff_sqrt_tab[a>>6 ]>>1;
- else if(a<(1<<16)) b= ff_sqrt_tab[a>>8 ] ;
-#endif
- else{
- int s= av_log2_16bit(a>>16)>>1;
- unsigned int c= a>>(s+2);
- b= ff_sqrt_tab[c>>(s+8)];
- b= FASTDIV(c,b) + (b<<s);
- }
-
- return b - (a<b*b);
-}
-
-#if defined(ARCH_X86)