3 * common internal api header.
9 #if ( defined(__PIC__) || defined(__pic__) ) && ! defined(PIC)
21 # define offsetof(T,F) ((unsigned int)((char *)&((T *)0)->F))
29 # define snprintf _snprintf
30 # define vsnprintf _vsnprintf
37 #elif defined (CONFIG_OS2)
42 #endif /* !__MINGW32__ && CONFIG_OS2 */
44 # ifdef USE_FASTMEMCPY
45 # include "libvo/fastmemcpy.h"
48 // Use rip-relative addressing if compiling PIC code on x86-64.
49 # if defined(__MINGW32__) || defined(__CYGWIN__) || \
50 defined(__OS2__) || (defined (__OpenBSD__) && !defined(__ELF__))
51 # if defined(ARCH_X86_64) && defined(PIC)
52 # define MANGLE(a) "_" #a"(%%rip)"
54 # define MANGLE(a) "_" #a
57 # if defined(ARCH_X86_64) && defined(PIC)
58 # define MANGLE(a) #a"(%%rip)"
59 # elif defined(CONFIG_DARWIN)
60 # define MANGLE(a) "_" #a
68 # if !defined(DEBUG) && !defined(NDEBUG)
75 # define dprintf(fmt,...) av_log(NULL, AV_LOG_DEBUG, fmt, __VA_ARGS__)
77 # define dprintf(fmt,...)
84 # define av_abort() do { av_log(NULL, AV_LOG_ERROR, "Abort at %s:%d\n", __FILE__, __LINE__); abort(); } while (0)
86 extern const uint32_t inverse[256];
88 #if defined(ARCH_X86) || defined(ARCH_X86_64)
89 # define FASTDIV(a,b) \
95 :"1"(a),"g"(inverse[b])\
99 #elif defined(CONFIG_FASTDIV)
100 # define FASTDIV(a,b) ((uint32_t)((((uint64_t)a)*inverse[b])>>32))
102 # define FASTDIV(a,b) ((a)/(b))
106 extern FF_IMPORT_ATTR const uint8_t ff_sqrt_tab[128];
108 static inline int ff_sqrt(int a)
114 if(a<128) return ff_sqrt_tab[a];
116 for(s=15; s>=0; s--){
117 int b= ret_sq + (1<<(s*2)) + (ret<<s)*2;
126 #if defined(ARCH_X86) || defined(ARCH_X86_64)
127 #define MASK_ABS(mask, level)\
132 : "+a" (level), "=&d" (mask)\
135 #define MASK_ABS(mask, level)\
137 level= (level^mask)-mask;
140 #if __CPU__ >= 686 && !defined(RUNTIME_CPUDETECT)
141 #define COPY3_IF_LT(x,y,a,b,c,d)\
147 : "+r" (x), "+r" (a), "+r" (c)\
148 : "r" (y), "r" (b), "r" (d)\
151 #define COPY3_IF_LT(x,y,a,b,c,d)\
159 /* avoid usage of various functions */
160 #define malloc please_use_av_malloc
161 #define free please_use_av_free
162 #define realloc please_use_av_realloc
163 #define time time_is_forbidden_due_to_security_issues
164 #define rand rand_is_forbidden_due_to_state_trashing
165 #define srand srand_is_forbidden_due_to_state_trashing
166 #define sprintf sprintf_is_forbidden_due_to_security_issues_use_snprintf
167 #define strcat strcat_is_forbidden_due_to_security_issues_use_pstrcat
168 #if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
169 #define printf please_use_av_log
170 #define fprintf please_use_av_log
173 #define CHECKED_ALLOCZ(p, size)\
175 p= av_mallocz(size);\
176 if(p==NULL && (size)!=0){\
183 /* XXX: add ISOC specific test to avoid specific BSD testing. */
184 /* better than nothing implementation. */
185 /* btw, rintf() is existing on fbsd too -- alex */
186 static always_inline long int lrintf(float x)
193 : "=m" (i) : "t" (x) : "st"
197 /* XXX: incorrect, but make it compile */
198 return (int)(x + (x < 0 ? -0.5 : 0.5));
199 # endif /* ARCH_X86 */
201 return (int)(rint(x));
202 #endif /* __MINGW32__ */
204 #endif /* HAVE_LRINTF */
206 #endif /* INTERNAL_H */