summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-26 18:06:00 +0300
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-04-26 18:06:00 +0300
commit837c48ddeef9066f16c119f3cac412d37a25766a (patch)
tree61b95ec92e22522c8ccd07cd213f66dd56c1c197 /libmpcodecs
parente913d6c5dabcf342d8c1a7070382d712fc354948 (diff)
parent7bf961b1a3bbea070f40247417965493965729e1 (diff)
downloadmpv-837c48ddeef9066f16c119f3cac412d37a25766a.tar.bz2
mpv-837c48ddeef9066f16c119f3cac412d37a25766a.tar.xz
Merge svn changes up to r31020
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/vf_gradfun.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/libmpcodecs/vf_gradfun.c b/libmpcodecs/vf_gradfun.c
index f7495948e5..ff53d8aa75 100644
--- a/libmpcodecs/vf_gradfun.c
+++ b/libmpcodecs/vf_gradfun.c
@@ -91,7 +91,7 @@ static void blur_line_c(uint16_t *dc, uint16_t *buf, uint16_t *buf1,
}
}
-#if HAVE_SSSE3
+#if HAVE_MMX2
static void filter_line_mmx2(uint8_t *dst, uint8_t *src, uint16_t *dc,
int width, int thresh, const uint16_t *dithers)
{
@@ -138,7 +138,9 @@ static void filter_line_mmx2(uint8_t *dst, uint8_t *src, uint16_t *dc,
:"memory"
);
}
+#endif
+#if HAVE_SSSE3
static void filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc,
int width, int thresh, const uint16_t *dithers)
{
@@ -184,7 +186,9 @@ static void filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc,
:"memory"
);
}
+#endif // HAVE_SSSE3
+#if HAVE_6REGS && HAVE_SSE2
#define BLURV(load)\
intptr_t x = -2*width;\
__asm__ volatile(\
@@ -218,7 +222,6 @@ static void filter_line_ssse3(uint8_t *dst, uint8_t *src, uint16_t *dc,
:"memory"\
);
-#if HAVE_6REGS
static void blur_line_sse2(uint16_t *dc, uint16_t *buf, uint16_t *buf1,
uint8_t *src, int sstride, int width)
{
@@ -228,8 +231,7 @@ static void blur_line_sse2(uint16_t *dc, uint16_t *buf, uint16_t *buf1,
BLURV("movdqa");
}
}
-#endif // HAVE_6REGS
-#endif // HAVE_SSSE3
+#endif // HAVE_6REGS && HAVE_SSE2
static void filter(struct vf_priv_s *ctx, uint8_t *dst, uint8_t *src,
int width, int height, int dstride, int sstride, int r)
@@ -383,13 +385,15 @@ static int vf_open(vf_instance_t *vf, char *args)
vf->priv->blur_line = blur_line_c;
vf->priv->filter_line = filter_line_c;
-#if HAVE_SSSE3
-#if HAVE_6REGS
+#if HAVE_6REGS && HAVE_SSE2
if (gCpuCaps.hasSSE2)
vf->priv->blur_line = blur_line_sse2;
#endif
+#if HAVE_MMX2
if (gCpuCaps.hasMMX2)
vf->priv->filter_line = filter_line_mmx2;
+#endif
+#if HAVE_SSSE3
if (gCpuCaps.hasSSSE3)
vf->priv->filter_line = filter_line_ssse3;
#endif