summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2008-07-18 08:34:06 +0000
committerSebastian Dröge <slomo@circular-chaos.org>2008-07-18 08:34:06 +0000
commit26cb95316c8043e05365337660c1e07b067f298e (patch)
tree21f9652306edda7ca408ee1b389af80bca5a2d12
parent32e80c449f3a29513111bceb7583a03fd22ca299 (diff)
downloadgst-plugins-bad-26cb95316c8043e05365337660c1e07b067f298e.tar.gz
gst-plugins-bad-26cb95316c8043e05365337660c1e07b067f298e.tar.bz2
gst-plugins-bad-26cb95316c8043e05365337660c1e07b067f298e.zip
Disable the tomsmocomp algorithm for this release as it's buggy and has no C implementation yet.
Original commit message from CVS: * configure.ac: * gst/deinterlace2/Makefile.am: * gst/deinterlace2/gstdeinterlace2.c: (gst_deinterlace2_methods_get_type), (gst_deinterlace2_set_method), (gst_deinterlace2_class_init), (gst_deinterlace2_init): * gst/deinterlace2/gstdeinterlace2.h: * gst/deinterlace2/tvtime/greedy.c: (gst_deinterlace_method_greedy_l_class_init): * gst/deinterlace2/tvtime/greedyh.c: (gst_deinterlace_method_greedy_h_class_init): * gst/deinterlace2/tvtime/vfir.c: (gst_deinterlace_method_vfir_class_init): Disable the tomsmocomp algorithm for this release as it's buggy and has no C implementation yet. Build the deinterlace2 plugin on all architectures but still mark it as experimental. Build the x86 inline assembly only if GCC inline assembly is supported and only on x86 or amd64. Fixes bug #543286.
-rw-r--r--ChangeLog23
-rw-r--r--configure.ac6
-rw-r--r--gst/deinterlace2/Makefile.am9
-rw-r--r--gst/deinterlace2/gstdeinterlace2.c12
-rw-r--r--gst/deinterlace2/gstdeinterlace2.h11
-rw-r--r--gst/deinterlace2/tvtime/greedy.c6
-rw-r--r--gst/deinterlace2/tvtime/greedyh.c6
-rw-r--r--gst/deinterlace2/tvtime/vfir.c6
8 files changed, 54 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index 4d59b9a6..b380c64a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2008-07-18 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
+ * configure.ac:
+ * gst/deinterlace2/Makefile.am:
+ * gst/deinterlace2/gstdeinterlace2.c:
+ (gst_deinterlace2_methods_get_type), (gst_deinterlace2_set_method),
+ (gst_deinterlace2_class_init), (gst_deinterlace2_init):
+ * gst/deinterlace2/gstdeinterlace2.h:
+ * gst/deinterlace2/tvtime/greedy.c:
+ (gst_deinterlace_method_greedy_l_class_init):
+ * gst/deinterlace2/tvtime/greedyh.c:
+ (gst_deinterlace_method_greedy_h_class_init):
+ * gst/deinterlace2/tvtime/vfir.c:
+ (gst_deinterlace_method_vfir_class_init):
+ Disable the tomsmocomp algorithm for this release as it's buggy
+ and has no C implementation yet.
+
+ Build the deinterlace2 plugin on all architectures but still mark it
+ as experimental.
+
+ Build the x86 inline assembly only if GCC inline assembly is supported
+ and only on x86 or amd64. Fixes bug #543286.
+
2008-07-16 Jan Schmidt <Jan.Schmidt@sun.com>
* gst/real/gstrealvideodec.c: (open_library):
diff --git a/configure.ac b/configure.ac
index 70ebaca5..7aea13f0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -146,9 +146,6 @@ AS_GCC_INLINE_ASSEMBLY([HAVE_GCC_ASM=yes], [HAVE_GCC_ASM=no])
if test x$HAVE_GCC_ASM = xyes ; then
AC_DEFINE(HAVE_GCC_ASM, 1,
[Define if compiler supports gcc inline assembly])
-else
- AC_MSG_WARN([Not building deinterlace2 plugin, needs GCC inline assembly for now])
- AG_GST_DISABLE_PLUGIN(deinterlace2)
fi
AM_CONDITIONAL(HAVE_GCC_ASM, test "x$HAVE_GCC_ASM" = "xyes")
@@ -287,9 +284,6 @@ dnl real plugin only works on i386 and x86_64 for the time being.
if test "x$HAVE_CPU_I386" != "xyes" && test "x$HAVE_CPU_X86_64" != "xyes"; then
AC_MSG_WARN([Not building real plugin, only works on 32bit and 64bit x86 platforms])
AG_GST_DISABLE_PLUGIN(real)
-
- AC_MSG_WARN([Not building deinterlace2 plugin, only works on 32bit and 64bit x86 platforms for now])
- AG_GST_DISABLE_PLUGIN(deinterlace2)
fi
dnl disable experimental plug-ins
diff --git a/gst/deinterlace2/Makefile.am b/gst/deinterlace2/Makefile.am
index 26952e2e..fbddf189 100644
--- a/gst/deinterlace2/Makefile.am
+++ b/gst/deinterlace2/Makefile.am
@@ -4,15 +4,18 @@ libgstdeinterlace2_la_SOURCES = \
gstdeinterlace2.c \
tvtime/greedy.c \
tvtime/greedyh.c \
- tvtime/vfir.c \
- tvtime/tomsmocomp.c
+ tvtime/vfir.c
+
+# tvtime/tomsmocomp.c
libgstdeinterlace2_la_CFLAGS = $(GST_CFLAGS) \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(LIBOIL_CFLAGS) -DHAVE_MMX -DHAVE_SSE
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(LIBOIL_CFLAGS)
libgstdeinterlace2_la_LIBADD = $(GST_LIBS) \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) $(GST_BASE_LIBS) $(LIBOIL_LIBS)
libgstdeinterlace2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+EXTRA_DIST = tvtime/tomsmocomp.c
+
noinst_HEADERS = \
gstdeinterlace2.h \
tvtime/mmx.h \
diff --git a/gst/deinterlace2/gstdeinterlace2.c b/gst/deinterlace2/gstdeinterlace2.c
index 14fea794..54cde5ff 100644
--- a/gst/deinterlace2/gstdeinterlace2.c
+++ b/gst/deinterlace2/gstdeinterlace2.c
@@ -23,10 +23,11 @@
#include "config.h"
#endif
-#include "gstdeinterlace2.h"
#include <gst/gst.h>
#include <gst/video/video.h>
+#include <liboil/liboil.h>
+#include "gstdeinterlace2.h"
#include "tvtime/plugins.h"
#include <string.h>
@@ -95,7 +96,9 @@ gst_deinterlace2_methods_get_type (void)
static GType deinterlace2_methods_type = 0;
static const GEnumValue methods_types[] = {
+#if 0
{GST_DEINTERLACE2_TOMSMOCOMP, "Toms Motion Compensation", "tomsmocomp"},
+#endif
{GST_DEINTERLACE2_GREEDY_H, "Greedy High Motion", "greedyh"},
{GST_DEINTERLACE2_GREEDY_L, "Greedy Low Motion", "greedyl"},
{GST_DEINTERLACE2_VFIR, "Vertical Blur", "vfir"},
@@ -212,9 +215,11 @@ gst_deinterlace2_set_method (GstDeinterlace2 * self,
}
switch (method) {
+#if 0
case GST_DEINTERLACE2_TOMSMOCOMP:
self->method = g_object_new (GST_TYPE_DEINTERLACE_TOMSMOCOMP, NULL);
break;
+#endif
case GST_DEINTERLACE2_GREEDY_H:
self->method = g_object_new (GST_TYPE_DEINTERLACE_GREEDY_H, NULL);
break;
@@ -270,8 +275,7 @@ gst_deinterlace2_class_init (GstDeinterlace2Class * klass)
"Method",
"Deinterlace Method",
GST_TYPE_DEINTERLACE2_METHODS,
- GST_DEINTERLACE2_TOMSMOCOMP,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
+ GST_DEINTERLACE2_GREEDY_H, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
);
g_object_class_install_property (gobject_class, ARG_FIELDS,
@@ -351,7 +355,7 @@ gst_deinterlace2_init (GstDeinterlace2 * self, GstDeinterlace2Class * klass)
gst_element_no_more_pads (GST_ELEMENT (self));
- gst_deinterlace2_set_method (self, GST_DEINTERLACE2_TOMSMOCOMP);
+ gst_deinterlace2_set_method (self, GST_DEINTERLACE2_GREEDY_H);
self->field_layout = GST_DEINTERLACE2_LAYOUT_AUTO;
self->fields = GST_DEINTERLACE2_ALL;
diff --git a/gst/deinterlace2/gstdeinterlace2.h b/gst/deinterlace2/gstdeinterlace2.h
index 091602a5..ee9a2018 100644
--- a/gst/deinterlace2/gstdeinterlace2.h
+++ b/gst/deinterlace2/gstdeinterlace2.h
@@ -22,12 +22,17 @@
#ifndef __GST_DEINTERLACE_2_H__
#define __GST_DEINTERLACE_2_H__
+#include <gst/gst.h>
+#include <gst/base/gstbasetransform.h>
#include <liboil/liboil.h>
-#include <liboil/liboilfunction.h>
#include <liboil/liboilcpu.h>
+#include <liboil/liboilfunction.h>
-#include <gst/gst.h>
-#include <gst/base/gstbasetransform.h>
+#ifdef HAVE_GCC_ASM
+#if defined(HAVE_CPU_I386) || defined(HAVE_CPU_X86_64)
+#define BUILD_X86_ASM
+#endif
+#endif
G_BEGIN_DECLS
diff --git a/gst/deinterlace2/tvtime/greedy.c b/gst/deinterlace2/tvtime/greedy.c
index 9e398e75..e4324657 100644
--- a/gst/deinterlace2/tvtime/greedy.c
+++ b/gst/deinterlace2/tvtime/greedy.c
@@ -121,7 +121,7 @@ deinterlace_greedy_packed422_scanline_c (GstDeinterlaceMethodGreedyL * self,
}
}
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
#include "mmx.h"
static void
deinterlace_greedy_packed422_scanline_mmx (GstDeinterlaceMethodGreedyL * self,
@@ -449,7 +449,7 @@ gst_deinterlace_method_greedy_l_class_init (GstDeinterlaceMethodGreedyLClass *
{
GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass;
GObjectClass *gobject_class = (GObjectClass *) klass;
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
guint cpu_flags = oil_cpu_get_flags ();
#endif
@@ -468,7 +468,7 @@ gst_deinterlace_method_greedy_l_class_init (GstDeinterlaceMethodGreedyLClass *
dim_class->nick = "greedyl";
dim_class->latency = 1;
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) {
klass->scanline = deinterlace_greedy_packed422_scanline_mmxext;
} else if (cpu_flags & OIL_IMPL_FLAG_MMX) {
diff --git a/gst/deinterlace2/tvtime/greedyh.c b/gst/deinterlace2/tvtime/greedyh.c
index 037c4dfc..73b572fa 100644
--- a/gst/deinterlace2/tvtime/greedyh.c
+++ b/gst/deinterlace2/tvtime/greedyh.c
@@ -205,7 +205,7 @@ greedyDScaler_C (GstDeinterlaceMethodGreedyH * self, uint8_t * L1, uint8_t * L2,
}
}
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
#define IS_MMXEXT
#define SIMD_TYPE MMXEXT
@@ -363,7 +363,7 @@ gst_deinterlace_method_greedy_h_class_init (GstDeinterlaceMethodGreedyHClass *
{
GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass;
GObjectClass *gobject_class = (GObjectClass *) klass;
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
guint cpu_flags = oil_cpu_get_flags ();
#endif
@@ -396,7 +396,7 @@ gst_deinterlace_method_greedy_h_class_init (GstDeinterlaceMethodGreedyHClass *
dim_class->nick = "greedyh";
dim_class->latency = 1;
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) {
klass->scanline = greedyDScaler_MMXEXT;
} else if (cpu_flags & OIL_IMPL_FLAG_3DNOW) {
diff --git a/gst/deinterlace2/tvtime/vfir.c b/gst/deinterlace2/tvtime/vfir.c
index 0f46e6f4..85ed1555 100644
--- a/gst/deinterlace2/tvtime/vfir.c
+++ b/gst/deinterlace2/tvtime/vfir.c
@@ -90,7 +90,7 @@ deinterlace_line_c (uint8_t * dst, uint8_t * lum_m4,
}
}
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
#include "mmx.h"
static void
deinterlace_line_mmx (uint8_t * dst, uint8_t * lum_m4,
@@ -207,7 +207,7 @@ static void
gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass)
{
GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass;
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
guint cpu_flags = oil_cpu_get_flags ();
#endif
@@ -217,7 +217,7 @@ gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass)
dim_class->nick = "vfir";
dim_class->latency = 0;
-#ifdef HAVE_CPU_I386
+#ifdef BUILD_X86_ASM
if (cpu_flags & OIL_IMPL_FLAG_MMX) {
klass->scanline = deinterlace_line_mmx;
} else {