]> git.sesse.net Git - ffmpeg/blobdiff - libavutil/internal.h
libgsm installs headers in a subdirectory, use gsm.h from that subdirectory.
[ffmpeg] / libavutil / internal.h
index 14ea95b182d9a5111c2bb6bd35e305c75d409fd9..cd63b3d2a45ae389f99141ac8609af15b9acf249 100644 (file)
 #endif
 #endif
 
+#ifndef av_alias
+#if HAVE_ATTRIBUTE_MAY_ALIAS
+#   define av_alias __attribute__((may_alias))
+#else
+#   define av_alias
+#endif
+#endif
+
 #ifndef INT16_MIN
 #define INT16_MIN       (-0x7fff - 1)
 #endif
 #    define INT_BIT (CHAR_BIT * sizeof(int))
 #endif
 
-#if ( defined(__PIC__) || defined(__pic__) ) && ! defined(PIC)
-#    define PIC
-#endif
-
 #ifndef offsetof
 #    define offsetof(T, F) ((unsigned int)((char *)&((T *)0)->F))
 #endif
 
 /* math */
 
-extern const uint32_t ff_inverse[256];
-
-#if 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 HAVE_ARMV6 && HAVE_INLINE_ASM
-static inline av_const int FASTDIV(int a, int b)
-{
-    int r, t;
-    __asm__ volatile("cmp     %3, #2               \n\t"
-                     "ldr     %1, [%4, %3, lsl #2] \n\t"
-                     "lsrle   %0, %2, #1           \n\t"
-                     "smmulgt %0, %1, %2           \n\t"
-                     : "=&r"(r), "=&r"(t) : "r"(a), "r"(b), "r"(ff_inverse));
-    return r;
-}
-#elif ARCH_ARM && HAVE_INLINE_ASM
-static inline av_const int FASTDIV(int a, int b)
-{
-    int r, t;
-    __asm__ volatile("umull %1, %0, %2, %3"
-                     : "=&r"(r), "=&r"(t) : "r"(a), "r"(ff_inverse[b]));
-    return r;
-}
-#elif 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 av_const unsigned int ff_sqrt(unsigned int a)
@@ -198,25 +164,6 @@ static inline av_const unsigned int ff_sqrt(unsigned int a)
             level = (level ^ mask) - mask;
 #endif
 
-#if HAVE_CMOV
-#define COPY3_IF_LT(x, y, a, b, c, d)\
-__asm__ volatile(\
-    "cmpl  %0, %3       \n\t"\
-    "cmovl %3, %0       \n\t"\
-    "cmovl %4, %1       \n\t"\
-    "cmovl %5, %2       \n\t"\
-    : "+&r" (x), "+&r" (a), "+r" (c)\
-    : "r" (y), "r" (b), "r" (d)\
-);
-#else
-#define COPY3_IF_LT(x, y, a, b, c, d)\
-if ((y) < (x)) {\
-    (x) = (y);\
-    (a) = (b);\
-    (c) = (d);\
-}
-#endif
-
 /* avoid usage of dangerous/inappropriate system functions */
 #undef  malloc
 #define malloc please_use_av_malloc
@@ -249,24 +196,34 @@ if ((y) < (x)) {\
 #define perror please_use_av_log_instead_of_perror
 #endif
 
-#define CHECKED_ALLOC(p, size)\
+#define FF_ALLOC_OR_GOTO(ctx, p, size, label)\
 {\
     p = av_malloc(size);\
     if (p == NULL && (size) != 0) {\
-        av_log(NULL, AV_LOG_ERROR, "Cannot allocate memory.");\
-        goto fail;\
+        av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
+        goto label;\
     }\
 }
 
-#define CHECKED_ALLOCZ(p, size)\
+#define FF_ALLOCZ_OR_GOTO(ctx, p, size, label)\
 {\
     p = av_mallocz(size);\
     if (p == NULL && (size) != 0) {\
-        av_log(NULL, AV_LOG_ERROR, "Cannot allocate memory.");\
-        goto fail;\
+        av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
+        goto label;\
     }\
 }
 
+#if !HAVE_EXP2
+#undef exp2
+#define exp2(x) exp((x) * 0.693147180559945)
+#endif /* HAVE_EXP2 */
+
+#if !HAVE_EXP2F
+#undef exp2f
+#define exp2f(x) exp2(x)
+#endif /* HAVE_EXP2F */
+
 #if !HAVE_LLRINT
 static av_always_inline av_const long long llrint(double x)
 {
@@ -275,12 +232,15 @@ static av_always_inline av_const long long llrint(double x)
 #endif /* HAVE_LLRINT */
 
 #if !HAVE_LOG2
-static av_always_inline av_const double log2(double x)
-{
-    return log(x) * 1.44269504088896340736;
-}
+#undef log2
+#define log2(x) (log(x) * 1.44269504088896340736)
 #endif /* HAVE_LOG2 */
 
+#if !HAVE_LOG2F
+#undef log2f
+#define log2f(x) log2(x)
+#endif /* HAVE_LOG2F */
+
 #if !HAVE_LRINT
 static av_always_inline av_const long int lrint(double x)
 {