deinterlace: Add support for all common RGB formats
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 5 May 2010 15:39:32 +0000 (17:39 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Wed, 5 May 2010 15:39:32 +0000 (17:39 +0200)
gst/deinterlace/gstdeinterlace.c
gst/deinterlace/gstdeinterlacemethod.c
gst/deinterlace/gstdeinterlacemethod.h
gst/deinterlace/tvtime/greedy.c
gst/deinterlace/tvtime/linear.c
gst/deinterlace/tvtime/linearblend.c
gst/deinterlace/tvtime/scalerbob.c
gst/deinterlace/tvtime/vfir.c
gst/deinterlace/tvtime/weave.c
gst/deinterlace/tvtime/weavebff.c
gst/deinterlace/tvtime/weavetff.c

index 8987764..b31b098 100644 (file)
@@ -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);
index e93d5c3..9f2ce3e 100644 (file)
@@ -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;
index 57446a1..24457ff 100644 (file)
@@ -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;
index 8527fa3..f6198f1 100644 (file)
@@ -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) {
index 5b4a09b..8b617fe 100644 (file)
@@ -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 =
index 2d7478c..f46c54b 100644 (file)
@@ -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 =
index c64f524..f519f8a 100644 (file)
@@ -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 =
index 71151d0..f070d3e 100644 (file)
@@ -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;
index 65f7065..2a42b4a 100644 (file)
@@ -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;
index 4e9bb6a..66a3caf 100644 (file)
@@ -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;
index 50a81c3..1c976f1 100644 (file)
@@ -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;