[MOVED FROM BAD 31/56] 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.
This commit is contained in:
Sebastian Dröge 2008-07-18 08:34:06 +00:00 committed by Sebastian Dröge
parent 74aedd0723
commit fdd3d27274
6 changed files with 32 additions and 20 deletions

View file

@ -4,15 +4,18 @@ libgstdeinterlace2_la_SOURCES = \
gstdeinterlace2.c \ gstdeinterlace2.c \
tvtime/greedy.c \ tvtime/greedy.c \
tvtime/greedyh.c \ tvtime/greedyh.c \
tvtime/vfir.c \ tvtime/vfir.c
tvtime/tomsmocomp.c
# tvtime/tomsmocomp.c
libgstdeinterlace2_la_CFLAGS = $(GST_CFLAGS) \ 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) \ libgstdeinterlace2_la_LIBADD = $(GST_LIBS) \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) $(GST_BASE_LIBS) $(LIBOIL_LIBS) $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_MAJORMINOR) $(GST_BASE_LIBS) $(LIBOIL_LIBS)
libgstdeinterlace2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstdeinterlace2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
EXTRA_DIST = tvtime/tomsmocomp.c
noinst_HEADERS = \ noinst_HEADERS = \
gstdeinterlace2.h \ gstdeinterlace2.h \
tvtime/mmx.h \ tvtime/mmx.h \

View file

@ -23,10 +23,11 @@
#include "config.h" #include "config.h"
#endif #endif
#include "gstdeinterlace2.h"
#include <gst/gst.h> #include <gst/gst.h>
#include <gst/video/video.h> #include <gst/video/video.h>
#include <liboil/liboil.h>
#include "gstdeinterlace2.h"
#include "tvtime/plugins.h" #include "tvtime/plugins.h"
#include <string.h> #include <string.h>
@ -95,7 +96,9 @@ gst_deinterlace2_methods_get_type (void)
static GType deinterlace2_methods_type = 0; static GType deinterlace2_methods_type = 0;
static const GEnumValue methods_types[] = { static const GEnumValue methods_types[] = {
#if 0
{GST_DEINTERLACE2_TOMSMOCOMP, "Toms Motion Compensation", "tomsmocomp"}, {GST_DEINTERLACE2_TOMSMOCOMP, "Toms Motion Compensation", "tomsmocomp"},
#endif
{GST_DEINTERLACE2_GREEDY_H, "Greedy High Motion", "greedyh"}, {GST_DEINTERLACE2_GREEDY_H, "Greedy High Motion", "greedyh"},
{GST_DEINTERLACE2_GREEDY_L, "Greedy Low Motion", "greedyl"}, {GST_DEINTERLACE2_GREEDY_L, "Greedy Low Motion", "greedyl"},
{GST_DEINTERLACE2_VFIR, "Vertical Blur", "vfir"}, {GST_DEINTERLACE2_VFIR, "Vertical Blur", "vfir"},
@ -212,9 +215,11 @@ gst_deinterlace2_set_method (GstDeinterlace2 * self,
} }
switch (method) { switch (method) {
#if 0
case GST_DEINTERLACE2_TOMSMOCOMP: case GST_DEINTERLACE2_TOMSMOCOMP:
self->method = g_object_new (GST_TYPE_DEINTERLACE_TOMSMOCOMP, NULL); self->method = g_object_new (GST_TYPE_DEINTERLACE_TOMSMOCOMP, NULL);
break; break;
#endif
case GST_DEINTERLACE2_GREEDY_H: case GST_DEINTERLACE2_GREEDY_H:
self->method = g_object_new (GST_TYPE_DEINTERLACE_GREEDY_H, NULL); self->method = g_object_new (GST_TYPE_DEINTERLACE_GREEDY_H, NULL);
break; break;
@ -270,8 +275,7 @@ gst_deinterlace2_class_init (GstDeinterlace2Class * klass)
"Method", "Method",
"Deinterlace Method", "Deinterlace Method",
GST_TYPE_DEINTERLACE2_METHODS, GST_TYPE_DEINTERLACE2_METHODS,
GST_DEINTERLACE2_TOMSMOCOMP, GST_DEINTERLACE2_GREEDY_H, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)
); );
g_object_class_install_property (gobject_class, ARG_FIELDS, 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_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->field_layout = GST_DEINTERLACE2_LAYOUT_AUTO;
self->fields = GST_DEINTERLACE2_ALL; self->fields = GST_DEINTERLACE2_ALL;

View file

@ -22,12 +22,17 @@
#ifndef __GST_DEINTERLACE_2_H__ #ifndef __GST_DEINTERLACE_2_H__
#define __GST_DEINTERLACE_2_H__ #define __GST_DEINTERLACE_2_H__
#include <liboil/liboil.h>
#include <liboil/liboilfunction.h>
#include <liboil/liboilcpu.h>
#include <gst/gst.h> #include <gst/gst.h>
#include <gst/base/gstbasetransform.h> #include <gst/base/gstbasetransform.h>
#include <liboil/liboil.h>
#include <liboil/liboilcpu.h>
#include <liboil/liboilfunction.h>
#ifdef HAVE_GCC_ASM
#if defined(HAVE_CPU_I386) || defined(HAVE_CPU_X86_64)
#define BUILD_X86_ASM
#endif
#endif
G_BEGIN_DECLS G_BEGIN_DECLS

View file

@ -121,7 +121,7 @@ deinterlace_greedy_packed422_scanline_c (GstDeinterlaceMethodGreedyL * self,
} }
} }
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
#include "mmx.h" #include "mmx.h"
static void static void
deinterlace_greedy_packed422_scanline_mmx (GstDeinterlaceMethodGreedyL * self, deinterlace_greedy_packed422_scanline_mmx (GstDeinterlaceMethodGreedyL * self,
@ -449,7 +449,7 @@ gst_deinterlace_method_greedy_l_class_init (GstDeinterlaceMethodGreedyLClass *
{ {
GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass; GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass;
GObjectClass *gobject_class = (GObjectClass *) klass; GObjectClass *gobject_class = (GObjectClass *) klass;
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
guint cpu_flags = oil_cpu_get_flags (); guint cpu_flags = oil_cpu_get_flags ();
#endif #endif
@ -468,7 +468,7 @@ gst_deinterlace_method_greedy_l_class_init (GstDeinterlaceMethodGreedyLClass *
dim_class->nick = "greedyl"; dim_class->nick = "greedyl";
dim_class->latency = 1; dim_class->latency = 1;
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) { if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) {
klass->scanline = deinterlace_greedy_packed422_scanline_mmxext; klass->scanline = deinterlace_greedy_packed422_scanline_mmxext;
} else if (cpu_flags & OIL_IMPL_FLAG_MMX) { } else if (cpu_flags & OIL_IMPL_FLAG_MMX) {

View 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 IS_MMXEXT
#define SIMD_TYPE MMXEXT #define SIMD_TYPE MMXEXT
@ -363,7 +363,7 @@ gst_deinterlace_method_greedy_h_class_init (GstDeinterlaceMethodGreedyHClass *
{ {
GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass; GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass;
GObjectClass *gobject_class = (GObjectClass *) klass; GObjectClass *gobject_class = (GObjectClass *) klass;
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
guint cpu_flags = oil_cpu_get_flags (); guint cpu_flags = oil_cpu_get_flags ();
#endif #endif
@ -396,7 +396,7 @@ gst_deinterlace_method_greedy_h_class_init (GstDeinterlaceMethodGreedyHClass *
dim_class->nick = "greedyh"; dim_class->nick = "greedyh";
dim_class->latency = 1; dim_class->latency = 1;
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) { if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) {
klass->scanline = greedyDScaler_MMXEXT; klass->scanline = greedyDScaler_MMXEXT;
} else if (cpu_flags & OIL_IMPL_FLAG_3DNOW) { } else if (cpu_flags & OIL_IMPL_FLAG_3DNOW) {

View 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" #include "mmx.h"
static void static void
deinterlace_line_mmx (uint8_t * dst, uint8_t * lum_m4, deinterlace_line_mmx (uint8_t * dst, uint8_t * lum_m4,
@ -207,7 +207,7 @@ static void
gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass) gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass)
{ {
GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass; GstDeinterlaceMethodClass *dim_class = (GstDeinterlaceMethodClass *) klass;
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
guint cpu_flags = oil_cpu_get_flags (); guint cpu_flags = oil_cpu_get_flags ();
#endif #endif
@ -217,7 +217,7 @@ gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass)
dim_class->nick = "vfir"; dim_class->nick = "vfir";
dim_class->latency = 0; dim_class->latency = 0;
#ifdef HAVE_CPU_I386 #ifdef BUILD_X86_ASM
if (cpu_flags & OIL_IMPL_FLAG_MMX) { if (cpu_flags & OIL_IMPL_FLAG_MMX) {
klass->scanline = deinterlace_line_mmx; klass->scanline = deinterlace_line_mmx;
} else { } else {