mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-31 19:42:26 +00:00
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:
parent
32e80c449f
commit
26cb95316c
8 changed files with 55 additions and 26 deletions
23
ChangeLog
23
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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -22,12 +22,17 @@
|
|||
#ifndef __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/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
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue