# HG changeset patch # User rfelker # Date 1051727044 0 # Node ID 898a50ad6839f8839e767d1680df20cbfbe54e24 # Parent b8780122e04302af84c39829179a8c2375696e7a 100l in my 100l fix! :( it's finally right now (i hope!) diff -r b8780122e043 -r 898a50ad6839 libmpcodecs/vf_crop.c --- a/libmpcodecs/vf_crop.c Wed Apr 30 18:16:21 2003 +0000 +++ b/libmpcodecs/vf_crop.c Wed Apr 30 18:24:04 2003 +0000 @@ -107,20 +107,30 @@ static void draw_slice(struct vf_instance_s* vf, unsigned char** src, int* stride, int w,int h, int x, int y){ unsigned char *src2[3]; - src2[0] = src[0] + vf->priv->crop_y*stride[0] + vf->priv->crop_x; + src2[0] = src[0]; if (vf->priv->dmpi->flags & MP_IMGFLAG_PLANAR) { - src2[1] = src[1] + (vf->priv->crop_y>>vf->priv->dmpi->chroma_y_shift)*stride[1] - + (vf->priv->crop_x>>vf->priv->dmpi->chroma_x_shift); - src2[2] = src[2] + (vf->priv->crop_y>>vf->priv->dmpi->chroma_y_shift)*stride[2] - + (vf->priv->crop_x>>vf->priv->dmpi->chroma_x_shift); + src2[1] = src[1]; + src2[2] = src[2]; } //mp_msg(MSGT_VFILTER, MSGL_V, "crop slice %d %d %d %d ->", w,h,x,y); if ((x -= vf->priv->crop_x) < 0) { - w += x; + x = -x; + src2[0] += x; + if (vf->priv->dmpi->flags & MP_IMGFLAG_PLANAR) { + src2[1] += x>>vf->priv->dmpi->chroma_x_shift; + src2[2] += x>>vf->priv->dmpi->chroma_x_shift; + } + w -= x; x = 0; } if ((y -= vf->priv->crop_y) < 0) { - h += y; + y = -y; + src2[0] += y*stride[0]; + if (vf->priv->dmpi->flags & MP_IMGFLAG_PLANAR) { + src2[1] += (y>>vf->priv->dmpi->chroma_y_shift)*stride[1]; + src2[2] += (y>>vf->priv->dmpi->chroma_y_shift)*stride[2]; + } + h -= y; y = 0; } if (x+w > vf->priv->crop_w) w = vf->priv->crop_w-x;