From 9d6e4a7ac81fb4d9e5e092250bb9d843e7a35a63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 5 May 2010 17:39:32 +0200 Subject: [PATCH] deinterlace: Add support for all common RGB formats --- gst/deinterlace/gstdeinterlace.c | 14 ++- gst/deinterlace/gstdeinterlacemethod.c | 130 ++++++++++++++++++++++++- gst/deinterlace/gstdeinterlacemethod.h | 18 ++++ gst/deinterlace/tvtime/greedy.c | 6 ++ gst/deinterlace/tvtime/linear.c | 30 ++++++ gst/deinterlace/tvtime/linearblend.c | 48 +++++++++ gst/deinterlace/tvtime/scalerbob.c | 10 ++ gst/deinterlace/tvtime/vfir.c | 19 ++++ gst/deinterlace/tvtime/weave.c | 13 +++ gst/deinterlace/tvtime/weavebff.c | 13 +++ gst/deinterlace/tvtime/weavetff.c | 13 +++ 11 files changed, 311 insertions(+), 3 deletions(-) diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c index 8987764bde..b31b098a86 100644 --- a/gst/deinterlace/gstdeinterlace.c +++ b/gst/deinterlace/gstdeinterlace.c @@ -158,7 +158,12 @@ static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src", GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("AYUV") ";" GST_VIDEO_CAPS_YUV ("Y444") ";" GST_VIDEO_CAPS_YUV ("YUY2") ";" GST_VIDEO_CAPS_YUV ("YVYU") ";" GST_VIDEO_CAPS_YUV ("Y42B") ";" GST_VIDEO_CAPS_YUV ("I420") ";" - GST_VIDEO_CAPS_YUV ("YV12") ";" GST_VIDEO_CAPS_YUV ("Y41B")) + GST_VIDEO_CAPS_YUV ("YV12") ";" GST_VIDEO_CAPS_YUV ("Y41B") ";" + GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_ABGR ";" + GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";" + GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";" + GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";" + GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR) ); static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink", @@ -167,7 +172,12 @@ static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink", GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("AYUV") ";" GST_VIDEO_CAPS_YUV ("Y444") ";" GST_VIDEO_CAPS_YUV ("YUY2") ";" GST_VIDEO_CAPS_YUV ("YVYU") ";" GST_VIDEO_CAPS_YUV ("Y42B") ";" GST_VIDEO_CAPS_YUV ("I420") ";" - GST_VIDEO_CAPS_YUV ("YV12") ";" GST_VIDEO_CAPS_YUV ("Y41B")) + GST_VIDEO_CAPS_YUV ("YV12") ";" GST_VIDEO_CAPS_YUV ("Y41B") ";" + GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_ABGR ";" + GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";" + GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";" + GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";" + GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR) ); static void gst_deinterlace_finalize (GObject * self); diff --git a/gst/deinterlace/gstdeinterlacemethod.c b/gst/deinterlace/gstdeinterlacemethod.c index e93d5c376e..9f2ce3e04c 100644 --- a/gst/deinterlace/gstdeinterlacemethod.c +++ b/gst/deinterlace/gstdeinterlacemethod.c @@ -70,6 +70,22 @@ gst_deinterlace_method_supported_impl (GstDeinterlaceMethodClass * klass, return (klass->deinterlace_frame_y41b != NULL); case GST_VIDEO_FORMAT_AYUV: return (klass->deinterlace_frame_ayuv != NULL); + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_xRGB: + return (klass->deinterlace_frame_argb != NULL); + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_xBGR: + return (klass->deinterlace_frame_abgr != NULL); + case GST_VIDEO_FORMAT_RGBA: + case GST_VIDEO_FORMAT_RGBx: + return (klass->deinterlace_frame_rgba != NULL); + case GST_VIDEO_FORMAT_BGRA: + case GST_VIDEO_FORMAT_BGRx: + return (klass->deinterlace_frame_bgra != NULL); + case GST_VIDEO_FORMAT_RGB: + return (klass->deinterlace_frame_rgb != NULL); + case GST_VIDEO_FORMAT_BGR: + return (klass->deinterlace_frame_bgr != NULL); default: return FALSE; } @@ -134,6 +150,28 @@ gst_deinterlace_method_setup_impl (GstDeinterlaceMethod * self, case GST_VIDEO_FORMAT_AYUV: self->deinterlace_frame = klass->deinterlace_frame_ayuv; break; + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_xRGB: + self->deinterlace_frame = klass->deinterlace_frame_argb; + break; + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_xBGR: + self->deinterlace_frame = klass->deinterlace_frame_abgr; + break; + case GST_VIDEO_FORMAT_RGBA: + case GST_VIDEO_FORMAT_RGBx: + self->deinterlace_frame = klass->deinterlace_frame_rgba; + break; + case GST_VIDEO_FORMAT_BGRA: + case GST_VIDEO_FORMAT_BGRx: + self->deinterlace_frame = klass->deinterlace_frame_bgra; + break; + case GST_VIDEO_FORMAT_RGB: + self->deinterlace_frame = klass->deinterlace_frame_rgb; + break; + case GST_VIDEO_FORMAT_BGR: + self->deinterlace_frame = klass->deinterlace_frame_bgr; + break; default: self->deinterlace_frame = NULL; break; @@ -194,6 +232,28 @@ gst_deinterlace_simple_method_supported (GstDeinterlaceMethodClass * mklass, return FALSE; switch (format) { + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_xRGB: + return (klass->interpolate_scanline_argb != NULL + && klass->copy_scanline_argb != NULL); + case GST_VIDEO_FORMAT_RGBA: + case GST_VIDEO_FORMAT_RGBx: + return (klass->interpolate_scanline_rgba != NULL + && klass->copy_scanline_rgba != NULL); + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_xBGR: + return (klass->interpolate_scanline_abgr != NULL + && klass->copy_scanline_abgr != NULL); + case GST_VIDEO_FORMAT_BGRA: + case GST_VIDEO_FORMAT_BGRx: + return (klass->interpolate_scanline_bgra != NULL + && klass->copy_scanline_bgra != NULL); + case GST_VIDEO_FORMAT_RGB: + return (klass->interpolate_scanline_rgb != NULL + && klass->copy_scanline_rgb != NULL); + case GST_VIDEO_FORMAT_BGR: + return (klass->interpolate_scanline_bgr != NULL + && klass->copy_scanline_bgr != NULL); case GST_VIDEO_FORMAT_YUY2: return (klass->interpolate_scanline_yuy2 != NULL && klass->copy_scanline_yuy2 != NULL); @@ -580,7 +640,6 @@ gst_deinterlace_simple_method_deinterlace_frame_planar (GstDeinterlaceMethod * field3 += row_stride; } - gst_deinterlace_simple_method_deinterlace_frame_planar_plane (self, out, field0, field1, field2, field3, cur_field_flags, i, copy_scanline, interpolate_scanline); @@ -625,6 +684,34 @@ gst_deinterlace_simple_method_setup (GstDeinterlaceMethod * method, self->interpolate_scanline_packed = klass->interpolate_scanline_ayuv; self->copy_scanline_packed = klass->copy_scanline_ayuv; break; + case GST_VIDEO_FORMAT_ARGB: + case GST_VIDEO_FORMAT_xRGB: + self->interpolate_scanline_packed = klass->interpolate_scanline_argb; + self->copy_scanline_packed = klass->copy_scanline_argb; + break; + case GST_VIDEO_FORMAT_ABGR: + case GST_VIDEO_FORMAT_xBGR: + self->interpolate_scanline_packed = klass->interpolate_scanline_abgr; + self->copy_scanline_packed = klass->copy_scanline_abgr; + break; + case GST_VIDEO_FORMAT_RGBA: + case GST_VIDEO_FORMAT_RGBx: + self->interpolate_scanline_packed = klass->interpolate_scanline_rgba; + self->copy_scanline_packed = klass->copy_scanline_rgba; + break; + case GST_VIDEO_FORMAT_BGRA: + case GST_VIDEO_FORMAT_BGRx: + self->interpolate_scanline_packed = klass->interpolate_scanline_bgra; + self->copy_scanline_packed = klass->copy_scanline_bgra; + break; + case GST_VIDEO_FORMAT_RGB: + self->interpolate_scanline_packed = klass->interpolate_scanline_rgb; + self->copy_scanline_packed = klass->copy_scanline_rgb; + break; + case GST_VIDEO_FORMAT_BGR: + self->interpolate_scanline_packed = klass->interpolate_scanline_bgr; + self->copy_scanline_packed = klass->copy_scanline_bgr; + break; case GST_VIDEO_FORMAT_I420: case GST_VIDEO_FORMAT_YV12: case GST_VIDEO_FORMAT_Y444: @@ -657,6 +744,18 @@ gst_deinterlace_simple_method_class_init (GstDeinterlaceSimpleMethodClass gst_deinterlace_simple_method_deinterlace_frame_packed; dm_class->deinterlace_frame_yvyu = gst_deinterlace_simple_method_deinterlace_frame_packed; + dm_class->deinterlace_frame_argb = + gst_deinterlace_simple_method_deinterlace_frame_packed; + dm_class->deinterlace_frame_abgr = + gst_deinterlace_simple_method_deinterlace_frame_packed; + dm_class->deinterlace_frame_rgba = + gst_deinterlace_simple_method_deinterlace_frame_packed; + dm_class->deinterlace_frame_bgra = + gst_deinterlace_simple_method_deinterlace_frame_packed; + dm_class->deinterlace_frame_rgb = + gst_deinterlace_simple_method_deinterlace_frame_packed; + dm_class->deinterlace_frame_bgr = + gst_deinterlace_simple_method_deinterlace_frame_packed; dm_class->deinterlace_frame_i420 = gst_deinterlace_simple_method_deinterlace_frame_planar; dm_class->deinterlace_frame_yv12 = @@ -679,6 +778,35 @@ gst_deinterlace_simple_method_class_init (GstDeinterlaceSimpleMethodClass gst_deinterlace_simple_method_interpolate_scanline_packed; klass->copy_scanline_yvyu = gst_deinterlace_simple_method_copy_scanline_packed; + klass->interpolate_scanline_ayuv = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_ayuv = + gst_deinterlace_simple_method_copy_scanline_packed; + + klass->interpolate_scanline_argb = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_argb = + gst_deinterlace_simple_method_copy_scanline_packed; + klass->interpolate_scanline_abgr = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_abgr = + gst_deinterlace_simple_method_copy_scanline_packed; + + klass->interpolate_scanline_rgba = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_rgba = + gst_deinterlace_simple_method_copy_scanline_packed; + klass->interpolate_scanline_bgra = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_bgra = + gst_deinterlace_simple_method_copy_scanline_packed; + + klass->interpolate_scanline_rgb = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_rgb = gst_deinterlace_simple_method_copy_scanline_packed; + klass->interpolate_scanline_bgr = + gst_deinterlace_simple_method_interpolate_scanline_packed; + klass->copy_scanline_bgr = gst_deinterlace_simple_method_copy_scanline_packed; klass->interpolate_scanline_planar_y = gst_deinterlace_simple_method_interpolate_scanline_planar_y; diff --git a/gst/deinterlace/gstdeinterlacemethod.h b/gst/deinterlace/gstdeinterlacemethod.h index 57446a1ce3..24457ff1f7 100644 --- a/gst/deinterlace/gstdeinterlacemethod.h +++ b/gst/deinterlace/gstdeinterlacemethod.h @@ -98,6 +98,12 @@ struct _GstDeinterlaceMethodClass { GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_y42b; GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_y41b; GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_ayuv; + GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_argb; + GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_abgr; + GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_rgba; + GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_bgra; + GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_rgb; + GstDeinterlaceMethodDeinterlaceFunction deinterlace_frame_bgr; const gchar *name; const gchar *nick; @@ -181,6 +187,18 @@ struct _GstDeinterlaceSimpleMethodClass { GstDeinterlaceSimpleMethodFunction copy_scanline_yvyu; GstDeinterlaceSimpleMethodFunction interpolate_scanline_ayuv; GstDeinterlaceSimpleMethodFunction copy_scanline_ayuv; + GstDeinterlaceSimpleMethodFunction interpolate_scanline_argb; + GstDeinterlaceSimpleMethodFunction copy_scanline_argb; + GstDeinterlaceSimpleMethodFunction interpolate_scanline_abgr; + GstDeinterlaceSimpleMethodFunction copy_scanline_abgr; + GstDeinterlaceSimpleMethodFunction interpolate_scanline_rgba; + GstDeinterlaceSimpleMethodFunction copy_scanline_rgba; + GstDeinterlaceSimpleMethodFunction interpolate_scanline_bgra; + GstDeinterlaceSimpleMethodFunction copy_scanline_bgra; + GstDeinterlaceSimpleMethodFunction interpolate_scanline_rgb; + GstDeinterlaceSimpleMethodFunction copy_scanline_rgb; + GstDeinterlaceSimpleMethodFunction interpolate_scanline_bgr; + GstDeinterlaceSimpleMethodFunction copy_scanline_bgr; /* Planar formats */ GstDeinterlaceSimpleMethodFunction copy_scanline_planar_y; diff --git a/gst/deinterlace/tvtime/greedy.c b/gst/deinterlace/tvtime/greedy.c index 8527fa3df7..f6198f1253 100644 --- a/gst/deinterlace/tvtime/greedy.c +++ b/gst/deinterlace/tvtime/greedy.c @@ -574,6 +574,12 @@ gst_deinterlace_method_greedy_l_class_init (GstDeinterlaceMethodGreedyLClass * dim_class->deinterlace_frame_yv12 = deinterlace_frame_di_greedy_planar; dim_class->deinterlace_frame_y41b = deinterlace_frame_di_greedy_planar; dim_class->deinterlace_frame_ayuv = deinterlace_frame_di_greedy_planar; + dim_class->deinterlace_frame_argb = deinterlace_frame_di_greedy_packed; + dim_class->deinterlace_frame_rgba = deinterlace_frame_di_greedy_packed; + dim_class->deinterlace_frame_abgr = deinterlace_frame_di_greedy_packed; + dim_class->deinterlace_frame_bgra = deinterlace_frame_di_greedy_packed; + dim_class->deinterlace_frame_rgb = deinterlace_frame_di_greedy_packed; + dim_class->deinterlace_frame_bgr = deinterlace_frame_di_greedy_packed; #ifdef BUILD_X86_ASM if (cpu_flags & OIL_IMPL_FLAG_MMXEXT) { diff --git a/gst/deinterlace/tvtime/linear.c b/gst/deinterlace/tvtime/linear.c index 5b4a09b2af..8b617fef2c 100644 --- a/gst/deinterlace/tvtime/linear.c +++ b/gst/deinterlace/tvtime/linear.c @@ -293,6 +293,12 @@ gst_deinterlace_method_linear_class_init (GstDeinterlaceMethodLinearClass * dism_class->interpolate_scanline_yuy2 = deinterlace_scanline_linear_packed_c; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_linear_packed_c; dism_class->interpolate_scanline_ayuv = deinterlace_scanline_linear_packed_c; + dism_class->interpolate_scanline_argb = deinterlace_scanline_linear_packed_c; + dism_class->interpolate_scanline_abgr = deinterlace_scanline_linear_packed_c; + dism_class->interpolate_scanline_rgba = deinterlace_scanline_linear_packed_c; + dism_class->interpolate_scanline_bgra = deinterlace_scanline_linear_packed_c; + dism_class->interpolate_scanline_rgb = deinterlace_scanline_linear_packed_c; + dism_class->interpolate_scanline_bgr = deinterlace_scanline_linear_packed_c; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_linear_planar_y_c; dism_class->interpolate_scanline_planar_u = @@ -308,6 +314,18 @@ gst_deinterlace_method_linear_class_init (GstDeinterlaceMethodLinearClass * deinterlace_scanline_linear_packed_mmxext; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_linear_packed_mmxext; + dism_class->interpolate_scanline_argb = + deinterlace_scanline_linear_packed_mmxext; + dism_class->interpolate_scanline_abgr = + deinterlace_scanline_linear_packed_mmxext; + dism_class->interpolate_scanline_rgba = + deinterlace_scanline_linear_packed_mmxext; + dism_class->interpolate_scanline_bgra = + deinterlace_scanline_linear_packed_mmxext; + dism_class->interpolate_scanline_rgb = + deinterlace_scanline_linear_packed_mmxext; + dism_class->interpolate_scanline_bgr = + deinterlace_scanline_linear_packed_mmxext; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_linear_planar_y_mmxext; dism_class->interpolate_scanline_planar_u = @@ -321,6 +339,18 @@ gst_deinterlace_method_linear_class_init (GstDeinterlaceMethodLinearClass * deinterlace_scanline_linear_packed_mmx; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_linear_packed_mmx; + dism_class->interpolate_scanline_argb = + deinterlace_scanline_linear_packed_mmx; + dism_class->interpolate_scanline_abgr = + deinterlace_scanline_linear_packed_mmx; + dism_class->interpolate_scanline_rgba = + deinterlace_scanline_linear_packed_mmx; + dism_class->interpolate_scanline_bgra = + deinterlace_scanline_linear_packed_mmx; + dism_class->interpolate_scanline_rgb = + deinterlace_scanline_linear_packed_mmx; + dism_class->interpolate_scanline_bgr = + deinterlace_scanline_linear_packed_mmx; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_linear_planar_y_mmx; dism_class->interpolate_scanline_planar_u = diff --git a/gst/deinterlace/tvtime/linearblend.c b/gst/deinterlace/tvtime/linearblend.c index 2d7478c2ea..f46c54ba3d 100644 --- a/gst/deinterlace/tvtime/linearblend.c +++ b/gst/deinterlace/tvtime/linearblend.c @@ -328,15 +328,36 @@ static void deinterlace_scanline_linear_blend_packed_c; dism_class->interpolate_scanline_ayuv = deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_argb = + deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_rgba = + deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_abgr = + deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_bgra = + deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_rgb = + deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_bgr = + deinterlace_scanline_linear_blend_packed_c; + dism_class->interpolate_scanline_planar_y = deinterlace_scanline_linear_blend_planar_y_c; dism_class->interpolate_scanline_planar_u = deinterlace_scanline_linear_blend_planar_u_c; dism_class->interpolate_scanline_planar_v = deinterlace_scanline_linear_blend_planar_v_c; + dism_class->copy_scanline_yuy2 = deinterlace_scanline_linear_blend2_packed_c; dism_class->copy_scanline_yvyu = deinterlace_scanline_linear_blend2_packed_c; dism_class->copy_scanline_ayuv = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_argb = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_abgr = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_rgba = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_bgra = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_rgb = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_bgr = deinterlace_scanline_linear_blend2_packed_c; + dism_class->copy_scanline_planar_y = deinterlace_scanline_linear_blend2_planar_y_c; dism_class->copy_scanline_planar_u = @@ -352,6 +373,20 @@ static void deinterlace_scanline_linear_blend_packed_mmx; dism_class->interpolate_scanline_ayuv = deinterlace_scanline_linear_blend_packed_mmx; + dism_class->interpolate_scanline_argb = + deinterlace_scanline_linear_blend_packed_mmx; + dism_class->interpolate_scanline_rgba = + deinterlace_scanline_linear_blend_packed_mmx; + dism_class->interpolate_scanline_abgr = + deinterlace_scanline_linear_blend_packed_mmx; + dism_class->interpolate_scanline_bgra = + deinterlace_scanline_linear_blend_packed_mmx; + dism_class->interpolate_scanline_rgb = + deinterlace_scanline_linear_blend_packed_mmx; + dism_class->interpolate_scanline_bgr = + deinterlace_scanline_linear_blend_packed_mmx; + + dism_class->interpolate_scanline_planar_y = deinterlace_scanline_linear_blend_planar_y_mmx; dism_class->interpolate_scanline_planar_u = @@ -365,6 +400,19 @@ static void deinterlace_scanline_linear_blend2_packed_mmx; dism_class->copy_scanline_yvyu = deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_argb = + deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_abgr = + deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_rgba = + deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_bgra = + deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_rgb = + deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_bgr = + deinterlace_scanline_linear_blend2_packed_mmx; + dism_class->copy_scanline_planar_y = deinterlace_scanline_linear_blend2_planar_y_mmx; dism_class->copy_scanline_planar_u = diff --git a/gst/deinterlace/tvtime/scalerbob.c b/gst/deinterlace/tvtime/scalerbob.c index c64f524853..f519f8a610 100644 --- a/gst/deinterlace/tvtime/scalerbob.c +++ b/gst/deinterlace/tvtime/scalerbob.c @@ -88,6 +88,16 @@ gst_deinterlace_method_scaler_bob_class_init (GstDeinterlaceMethodScalerBobClass deinterlace_scanline_scaler_bob_packed; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_scaler_bob_packed; + dism_class->interpolate_scanline_argb = + deinterlace_scanline_scaler_bob_packed; + dism_class->interpolate_scanline_abgr = + deinterlace_scanline_scaler_bob_packed; + dism_class->interpolate_scanline_rgba = + deinterlace_scanline_scaler_bob_packed; + dism_class->interpolate_scanline_bgra = + deinterlace_scanline_scaler_bob_packed; + dism_class->interpolate_scanline_rgb = deinterlace_scanline_scaler_bob_packed; + dism_class->interpolate_scanline_bgr = deinterlace_scanline_scaler_bob_packed; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_scaler_bob_planar_y; dism_class->interpolate_scanline_planar_u = diff --git a/gst/deinterlace/tvtime/vfir.c b/gst/deinterlace/tvtime/vfir.c index 71151d0751..f070d3e04a 100644 --- a/gst/deinterlace/tvtime/vfir.c +++ b/gst/deinterlace/tvtime/vfir.c @@ -268,12 +268,25 @@ gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass) dism_class->interpolate_scanline_ayuv = deinterlace_line_packed_mmx; dism_class->interpolate_scanline_yuy2 = deinterlace_line_packed_mmx; dism_class->interpolate_scanline_yvyu = deinterlace_line_packed_mmx; + dism_class->interpolate_scanline_argb = deinterlace_line_packed_mmx; + dism_class->interpolate_scanline_abgr = deinterlace_line_packed_mmx; + dism_class->interpolate_scanline_rgba = deinterlace_line_packed_mmx; + dism_class->interpolate_scanline_bgra = deinterlace_line_packed_mmx; + dism_class->interpolate_scanline_rgb = deinterlace_line_packed_mmx; + dism_class->interpolate_scanline_bgr = deinterlace_line_packed_mmx; dism_class->interpolate_scanline_planar_y = deinterlace_line_planar_y_mmx; dism_class->interpolate_scanline_planar_u = deinterlace_line_planar_u_mmx; dism_class->interpolate_scanline_planar_v = deinterlace_line_planar_v_mmx; } else { dism_class->interpolate_scanline_yuy2 = deinterlace_line_packed_c; dism_class->interpolate_scanline_yvyu = deinterlace_line_packed_c; + dism_class->interpolate_scanline_ayuv = deinterlace_line_packed_c; + dism_class->interpolate_scanline_argb = deinterlace_line_packed_c; + dism_class->interpolate_scanline_abgr = deinterlace_line_packed_c; + dism_class->interpolate_scanline_rgba = deinterlace_line_packed_c; + dism_class->interpolate_scanline_bgra = deinterlace_line_packed_c; + dism_class->interpolate_scanline_rgb = deinterlace_line_packed_c; + dism_class->interpolate_scanline_bgr = deinterlace_line_packed_c; dism_class->interpolate_scanline_planar_y = deinterlace_line_planar_y_c; dism_class->interpolate_scanline_planar_u = deinterlace_line_planar_u_c; dism_class->interpolate_scanline_planar_v = deinterlace_line_planar_v_c; @@ -282,6 +295,12 @@ gst_deinterlace_method_vfir_class_init (GstDeinterlaceMethodVFIRClass * klass) dism_class->interpolate_scanline_ayuv = deinterlace_line_packed_c; dism_class->interpolate_scanline_yuy2 = deinterlace_line_packed_c; dism_class->interpolate_scanline_yvyu = deinterlace_line_packed_c; + dism_class->interpolate_scanline_argb = deinterlace_line_packed_c; + dism_class->interpolate_scanline_abgr = deinterlace_line_packed_c; + dism_class->interpolate_scanline_rgba = deinterlace_line_packed_c; + dism_class->interpolate_scanline_bgra = deinterlace_line_packed_c; + dism_class->interpolate_scanline_rgb = deinterlace_line_packed_c; + dism_class->interpolate_scanline_bgr = deinterlace_line_packed_c; dism_class->interpolate_scanline_planar_y = deinterlace_line_planar_y_c; dism_class->interpolate_scanline_planar_u = deinterlace_line_planar_u_c; dism_class->interpolate_scanline_planar_v = deinterlace_line_planar_v_c; diff --git a/gst/deinterlace/tvtime/weave.c b/gst/deinterlace/tvtime/weave.c index 65f7065512..2a42b4acc1 100644 --- a/gst/deinterlace/tvtime/weave.c +++ b/gst/deinterlace/tvtime/weave.c @@ -118,15 +118,28 @@ gst_deinterlace_method_weave_class_init (GstDeinterlaceMethodWeaveClass * klass) dism_class->interpolate_scanline_ayuv = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_yuy2 = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_argb = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_abgr = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_rgba = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_bgra = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_rgb = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_bgr = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_weave_planar_y; dism_class->interpolate_scanline_planar_u = deinterlace_scanline_weave_planar_u; dism_class->interpolate_scanline_planar_v = deinterlace_scanline_weave_planar_v; + dism_class->copy_scanline_ayuv = copy_scanline_packed; dism_class->copy_scanline_yuy2 = copy_scanline_packed; dism_class->copy_scanline_yvyu = copy_scanline_packed; + dism_class->copy_scanline_argb = copy_scanline_packed; + dism_class->copy_scanline_abgr = copy_scanline_packed; + dism_class->copy_scanline_rgba = copy_scanline_packed; + dism_class->copy_scanline_bgra = copy_scanline_packed; + dism_class->copy_scanline_rgb = copy_scanline_packed; + dism_class->copy_scanline_bgr = copy_scanline_packed; dism_class->copy_scanline_planar_y = copy_scanline_planar_y; dism_class->copy_scanline_planar_u = copy_scanline_planar_u; dism_class->copy_scanline_planar_v = copy_scanline_planar_v; diff --git a/gst/deinterlace/tvtime/weavebff.c b/gst/deinterlace/tvtime/weavebff.c index 4e9bb6a0c9..66a3caf6d2 100644 --- a/gst/deinterlace/tvtime/weavebff.c +++ b/gst/deinterlace/tvtime/weavebff.c @@ -139,15 +139,28 @@ gst_deinterlace_method_weave_bff_class_init (GstDeinterlaceMethodWeaveBFFClass * dism_class->interpolate_scanline_ayuv = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_yuy2 = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_argb = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_abgr = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_rgba = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_bgra = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_rgb = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_bgr = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_weave_planar_y; dism_class->interpolate_scanline_planar_u = deinterlace_scanline_weave_planar_u; dism_class->interpolate_scanline_planar_v = deinterlace_scanline_weave_planar_v; + dism_class->copy_scanline_ayuv = copy_scanline_packed; dism_class->copy_scanline_yuy2 = copy_scanline_packed; dism_class->copy_scanline_yvyu = copy_scanline_packed; + dism_class->copy_scanline_argb = copy_scanline_packed; + dism_class->copy_scanline_abgr = copy_scanline_packed; + dism_class->copy_scanline_rgba = copy_scanline_packed; + dism_class->copy_scanline_bgra = copy_scanline_packed; + dism_class->copy_scanline_rgb = copy_scanline_packed; + dism_class->copy_scanline_bgr = copy_scanline_packed; dism_class->copy_scanline_planar_y = copy_scanline_planar_y; dism_class->copy_scanline_planar_u = copy_scanline_planar_u; dism_class->copy_scanline_planar_v = copy_scanline_planar_v; diff --git a/gst/deinterlace/tvtime/weavetff.c b/gst/deinterlace/tvtime/weavetff.c index 50a81c380d..1c976f1781 100644 --- a/gst/deinterlace/tvtime/weavetff.c +++ b/gst/deinterlace/tvtime/weavetff.c @@ -140,15 +140,28 @@ gst_deinterlace_method_weave_tff_class_init (GstDeinterlaceMethodWeaveTFFClass * dism_class->interpolate_scanline_ayuv = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_yuy2 = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_yvyu = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_argb = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_abgr = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_rgba = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_bgra = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_rgb = deinterlace_scanline_weave_packed; + dism_class->interpolate_scanline_bgr = deinterlace_scanline_weave_packed; dism_class->interpolate_scanline_planar_y = deinterlace_scanline_weave_planar_y; dism_class->interpolate_scanline_planar_u = deinterlace_scanline_weave_planar_u; dism_class->interpolate_scanline_planar_v = deinterlace_scanline_weave_planar_v; + dism_class->copy_scanline_ayuv = copy_scanline_packed; dism_class->copy_scanline_yuy2 = copy_scanline_packed; dism_class->copy_scanline_yvyu = copy_scanline_packed; + dism_class->copy_scanline_argb = copy_scanline_packed; + dism_class->copy_scanline_abgr = copy_scanline_packed; + dism_class->copy_scanline_rgba = copy_scanline_packed; + dism_class->copy_scanline_bgra = copy_scanline_packed; + dism_class->copy_scanline_rgb = copy_scanline_packed; + dism_class->copy_scanline_bgr = copy_scanline_packed; dism_class->copy_scanline_planar_y = copy_scanline_planar_y; dism_class->copy_scanline_planar_u = copy_scanline_planar_u; dism_class->copy_scanline_planar_v = copy_scanline_planar_v;