From: Jan Schmidt Date: Sun, 19 Jan 2020 03:50:12 +0000 (+1100) Subject: yadif: Only build inline Asm with gcc/clang X-Git-Tag: 1.19.3~507^2~2413 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1986d4f94220d407ac00f7817ef32278506867ff;p=platform%2Fupstream%2Fgstreamer.git yadif: Only build inline Asm with gcc/clang --- diff --git a/gst/yadif/vf_yadif.c b/gst/yadif/vf_yadif.c index a0bec4a..0a7baee 100644 --- a/gst/yadif/vf_yadif.c +++ b/gst/yadif/vf_yadif.c @@ -116,7 +116,7 @@ FILTER} #endif void yadif_filter (GstYadif * yadif, int parity, int tff); -#ifdef HAVE_CPU_X86_64 +#if HAVE_CPU_X86_64 && (defined(__GNUC__) || defined(__clang__)) void filter_line_x86_64 (guint8 * dst, guint8 * prev, guint8 * cur, guint8 * next, int w, int prefs, int mrefs, int parity, int mode); @@ -146,7 +146,7 @@ yadif_filter (GstYadif * yadif, int parity, int tff) guint8 *next = next_data + y * refs; guint8 *dst = dest_data + y * refs; int mode = ((y == 1) || (y + 2 == h)) ? 2 : yadif->mode; -#if HAVE_CPU_X86_64 +#if HAVE_CPU_X86_64 && (defined(__GNUC__) || defined(__clang__)) if (0) { filter_line_c (dst, prev, cur, next, w, y + 1 < h ? refs : -refs, y ? -refs : refs, parity ^ tff, mode); diff --git a/gst/yadif/yadif.c b/gst/yadif/yadif.c index 4bbf6c5..39cd3cf 100644 --- a/gst/yadif/yadif.c +++ b/gst/yadif/yadif.c @@ -23,14 +23,22 @@ #include #if HAVE_CPU_X86_64 +/* The inline asm is not MSVC compatible */ +#if defined(__GNUC__) || defined(__clang__) typedef struct xmm_reg { guint64 a, b; } xmm_reg; typedef gint64 x86_reg; + +#if defined(_MSC_VER) +#define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v +#define DECLARE_ASM_CONST(n,t,v) static const __declspec(align(n)) t v +#else #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v #define DECLARE_ASM_CONST(n,t,v) static const t __attribute__((used)) __attribute__ ((aligned (n))) v +#endif #if defined(__APPLE__) # define EXTERN_PREFIX "_" @@ -105,3 +113,4 @@ filter_line_x86_64 (guint8 * dst, } #endif +#endif