gst/videobox/gstvideobox.c: Fix the stride issue when boxing to AYUV.
authorJulien Moutte <julien@moutte.net>
Wed, 26 Oct 2005 14:08:49 +0000 (14:08 +0000)
committerJulien Moutte <julien@moutte.net>
Wed, 26 Oct 2005 14:08:49 +0000 (14:08 +0000)
Original commit message from CVS:
2005-10-26  Julien MOUTTE  <julien@moutte.net>

* gst/videobox/gstvideobox.c: (gst_video_box_class_init),
(gst_video_box_transform_caps), (gst_video_box_get_unit_size),
(gst_video_box_ayuv): Fix the stride issue when boxing to AYUV.

ChangeLog
gst/videobox/gstvideobox.c

index f84a267ea1ad657b2b8d5d57be1a735a9ab48d4c..4189ee1aeb147da1d7d59b38d2309d4e0eeb358d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-26  Julien MOUTTE  <julien@moutte.net>
+
+       * gst/videobox/gstvideobox.c: (gst_video_box_class_init),
+       (gst_video_box_transform_caps), (gst_video_box_get_unit_size),
+       (gst_video_box_ayuv): Fix the stride issue when boxing to AYUV.
+
 2005-10-26  Tim-Philipp Müller  <tim at centricular dot net>
 
        * sys/oss/gstossaudio.c:
index 374ab6aa502a3360222ab0255d9ab371ce870661..28fb13a6c1c18212e9d1150dce83ef6d79b0afd3 100644 (file)
@@ -303,6 +303,7 @@ gst_video_box_set_property (GObject * object, guint prop_id,
   else
     gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (video_box), FALSE);
 }
+
 static void
 gst_video_box_get_property (GObject * object, guint prop_id, GValue * value,
     GParamSpec * pspec)
@@ -561,7 +562,7 @@ gst_video_box_ayuv (GstVideoBox * video_box, guint8 * src, guint8 * dest)
   guint8 *srcY, *srcU, *srcV;
   gint crop_width, crop_width2, crop_height;
   gint out_width, out_height;
-  gint src_stride, src_stride2;
+  gint src_stridey, src_strideu, src_stridev;
   gint br, bl, bt, bb;
   gint colorY, colorU, colorV;
   gint i, j;
@@ -570,6 +571,8 @@ gst_video_box_ayuv (GstVideoBox * video_box, guint8 * src, guint8 * dest)
   guint32 *destp = (guint32 *) dest;
   guint32 ayuv;
 
+  GST_LOG ("blending AYUV");
+
   br = video_box->border_right;
   bl = video_box->border_left;
   bt = video_box->border_top;
@@ -578,8 +581,9 @@ gst_video_box_ayuv (GstVideoBox * video_box, guint8 * src, guint8 * dest)
   out_width = video_box->out_width;
   out_height = video_box->out_height;
 
-  src_stride = GST_VIDEO_I420_Y_ROWSTRIDE (video_box->in_width);
-  src_stride2 = src_stride / 2;
+  src_stridey = GST_VIDEO_I420_Y_ROWSTRIDE (video_box->in_width);
+  src_strideu = GST_VIDEO_I420_U_ROWSTRIDE (video_box->in_width);
+  src_stridev = GST_VIDEO_I420_V_ROWSTRIDE (video_box->in_width);
 
   crop_width =
       video_box->in_width - (video_box->crop_left + video_box->crop_right);
@@ -589,13 +593,13 @@ gst_video_box_ayuv (GstVideoBox * video_box, guint8 * src, guint8 * dest)
 
   srcY =
       src + GST_VIDEO_I420_Y_OFFSET (video_box->in_width, video_box->in_height);
-  srcY += src_stride * video_box->crop_top + video_box->crop_left;
+  srcY += src_stridey * video_box->crop_top + video_box->crop_left;
   srcU =
       src + GST_VIDEO_I420_U_OFFSET (video_box->in_width, video_box->in_height);
-  srcU += src_stride2 * (video_box->crop_top / 2) + (video_box->crop_left / 2);
+  srcU += src_strideu * (video_box->crop_top / 2) + (video_box->crop_left / 2);
   srcV =
       src + GST_VIDEO_I420_V_OFFSET (video_box->in_width, video_box->in_height);
-  srcV += src_stride2 * (video_box->crop_top / 2) + (video_box->crop_left / 2);
+  srcV += src_stridev * (video_box->crop_top / 2) + (video_box->crop_left / 2);
 
   colorY = yuv_colors_Y[video_box->fill_type];
   colorU = yuv_colors_U[video_box->fill_type];
@@ -632,10 +636,10 @@ gst_video_box_ayuv (GstVideoBox * video_box, guint8 * src, guint8 * dest)
       srcU -= crop_width2;
       srcV -= crop_width2;
     } else {
-      srcU += src_stride2 - crop_width2;
-      srcV += src_stride2 - crop_width2;
+      srcU += src_strideu - crop_width2;
+      srcV += src_stridev - crop_width2;
     }
-    srcY += src_stride - crop_width;
+    srcY += src_stridey - crop_width;
 
     destp = (guint32 *) dest;
     /* right border */