3 * common internal api header.
9 #if ( defined(__PIC__) || defined(__pic__) ) && ! defined(PIC)
21 # define offsetof(T,F) ((unsigned int)((char *)&((T *)0)->F))
24 #define AVOPTION_CODEC_BOOL(name, help, field) \
25 { name, help, offsetof(AVCodecContext, field), FF_OPT_TYPE_BOOL }
26 #define AVOPTION_CODEC_DOUBLE(name, help, field, minv, maxv, defval) \
27 { name, help, offsetof(AVCodecContext, field), FF_OPT_TYPE_DOUBLE, minv, maxv, defval }
28 #define AVOPTION_CODEC_FLAG(name, help, field, flag, defval) \
29 { name, help, offsetof(AVCodecContext, field), FF_OPT_TYPE_FLAG, flag, 0, defval }
30 #define AVOPTION_CODEC_INT(name, help, field, minv, maxv, defval) \
31 { name, help, offsetof(AVCodecContext, field), FF_OPT_TYPE_INT, minv, maxv, defval }
32 #define AVOPTION_CODEC_STRING(name, help, field, str, val) \
33 { name, help, offsetof(AVCodecContext, field), FF_OPT_TYPE_STRING, .defval = val, .defstr = str }
34 #define AVOPTION_CODEC_RCOVERRIDE(name, help, field) \
35 { name, help, offsetof(AVCodecContext, field), FF_OPT_TYPE_RCOVERRIDE, .defval = 0, .defstr = NULL }
36 #define AVOPTION_SUB(ptr) { .name = NULL, .help = (const char*)ptr }
37 #define AVOPTION_END() AVOPTION_SUB(NULL)
44 # define snprintf _snprintf
45 # define vsnprintf _vsnprintf
52 #elif defined (CONFIG_OS2)
57 #endif /* !__MINGW32__ && CONFIG_OS2 */
59 # ifdef USE_FASTMEMCPY
60 # include "libvo/fastmemcpy.h"
63 // Use rip-relative addressing if compiling PIC code on x86-64.
64 # if defined(__MINGW32__) || defined(__CYGWIN__) || \
65 defined(__OS2__) || (defined (__OpenBSD__) && !defined(__ELF__))
66 # if defined(ARCH_X86_64) && defined(PIC)
67 # define MANGLE(a) "_" #a"(%%rip)"
69 # define MANGLE(a) "_" #a
72 # if defined(ARCH_X86_64) && defined(PIC)
73 # define MANGLE(a) #a"(%%rip)"
74 # elif defined(CONFIG_DARWIN)
75 # define MANGLE(a) "_" #a
83 # if !defined(DEBUG) && !defined(NDEBUG)
90 # define dprintf(fmt,...) av_log(NULL, AV_LOG_DEBUG, fmt, __VA_ARGS__)
92 # define dprintf(fmt,...)
99 # define av_abort() do { av_log(NULL, AV_LOG_ERROR, "Abort at %s:%d\n", __FILE__, __LINE__); abort(); } while (0)
101 extern const uint32_t inverse
[256];
103 #if defined(ARCH_X86) || defined(ARCH_X86_64)
104 # define FASTDIV(a,b) \
109 :"=d"(ret),"=a"(dmy)\
110 :"1"(a),"g"(inverse[b])\
114 #elif defined(CONFIG_FASTDIV)
115 # define FASTDIV(a,b) ((uint32_t)((((uint64_t)a)*inverse[b])>>32))
117 # define FASTDIV(a,b) ((a)/(b))
121 extern FF_IMPORT_ATTR
const uint8_t ff_sqrt_tab
[128];
123 static inline int ff_sqrt(int a
)
129 if(a
<128) return ff_sqrt_tab
[a
];
131 for(s
=15; s
>=0; s
--){
132 int b
= ret_sq
+ (1<<(s
*2)) + (ret
<<s
)*2;
141 #if defined(ARCH_X86) || defined(ARCH_X86_64)
142 #define MASK_ABS(mask, level)\
147 : "+a" (level), "=&d" (mask)\
150 #define MASK_ABS(mask, level)\
152 level= (level^mask)-mask;
155 #if __CPU__ >= 686 && !defined(RUNTIME_CPUDETECT)
156 #define COPY3_IF_LT(x,y,a,b,c,d)\
162 : "+r" (x), "+r" (a), "+r" (c)\
163 : "r" (y), "r" (b), "r" (d)\
166 #define COPY3_IF_LT(x,y,a,b,c,d)\
174 /* avoid usage of various functions */
175 #define malloc please_use_av_malloc
176 #define free please_use_av_free
177 #define realloc please_use_av_realloc
178 #define time time_is_forbidden_due_to_security_issues
179 #define rand rand_is_forbidden_due_to_state_trashing
180 #define srand srand_is_forbidden_due_to_state_trashing
181 #define sprintf sprintf_is_forbidden_due_to_security_issues_use_snprintf
182 #define strcat strcat_is_forbidden_due_to_security_issues_use_pstrcat
183 #if !(defined(LIBAVFORMAT_BUILD) || defined(_FRAMEHOOK_H))
184 #define printf please_use_av_log
185 #define fprintf please_use_av_log
188 #define CHECKED_ALLOCZ(p, size)\
190 p= av_mallocz(size);\
191 if(p==NULL && (size)!=0){\
198 /* XXX: add ISOC specific test to avoid specific BSD testing. */
199 /* better than nothing implementation. */
200 /* btw, rintf() is existing on fbsd too -- alex */
201 static always_inline
long int lrintf(float x
)
208 : "=m" (i
) : "t" (x
) : "st"
212 /* XXX: incorrect, but make it compile */
213 return (int)(x
+ (x
< 0 ?
-0.5 : 0.5));
214 # endif /* ARCH_X86 */
216 return (int)(rint(x
));
217 #endif /* __MINGW32__ */
219 #endif /* HAVE_LRINTF */
221 #endif /* INTERNAL_H */