[MOVED FROM BAD 31/56] Disable the tomsmocomp algorithm for this release as it's...
authorSebastian Dröge <slomo@circular-chaos.org>
Fri, 18 Jul 2008 08:34:06 +0000 (08:34 +0000)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 13 May 2009 08:34:00 +0000 (10:34 +0200)
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.

gst/deinterlace2/Makefile.am
gst/deinterlace2/gstdeinterlace2.c
gst/deinterlace2/gstdeinterlace2.h
gst/deinterlace2/tvtime/greedy.c
gst/deinterlace2/tvtime/greedyh.c
gst/deinterlace2/tvtime/vfir.c

index 26952e2edc427e576b07a75652b3b4e3bb811eed..fbddf189ffb7f91e8f9deec92962659cc17b4d6f 100644 (file)
@@ -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 \
index 14fea794ca7a381ac6c1f4f2872563cb148d28f5..54cde5ffd2f9a677ab96b16789f44184d434ce3f 100644 (file)
 #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;
 
index 091602a57060514d25f25caeda8cdc36cbec0048..ee9a20189435c3fa96e9a64544470a2262929423 100644 (file)
 #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
 
index 9e398e75c2be62707e1da564cbb5ed3695dc59d4..e4324657106e3031fe80dafc7cc2bc7d199fab58 100644 (file)
@@ -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) {
index 037c4dfc8f9157c59b795eb762e31907f1d52b7f..73b572fa0874c8a7ff09c18e2413db7dcff33ad6 100644 (file)
@@ -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) {
index 0f46e6f492223d5afd739daccee9bc92347a0ecf..85ed1555654f4bec3ea657e200bbde622d4685ca 100644 (file)
@@ -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 {