From eb21c9bf1c94894bcee736a5c49a5b003565f61a Mon Sep 17 00:00:00 2001 From: Julien Moutte Date: Wed, 26 Oct 2005 14:08:49 +0000 Subject: [PATCH] gst/videobox/gstvideobox.c: Fix the stride issue when boxing to AYUV. Original commit message from CVS: 2005-10-26 Julien MOUTTE * 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 | 6 ++++++ gst/videobox/gstvideobox.c | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index f84a267ea1..4189ee1aeb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2005-10-26 Julien MOUTTE + + * 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 * sys/oss/gstossaudio.c: diff --git a/gst/videobox/gstvideobox.c b/gst/videobox/gstvideobox.c index 374ab6aa50..28fb13a6c1 100644 --- a/gst/videobox/gstvideobox.c +++ b/gst/videobox/gstvideobox.c @@ -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 */