diff options
author | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-06-23 21:08:31 +0000 |
---|---|---|
committer | alex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-06-23 21:08:31 +0000 |
commit | c20f4d0b428109bd9db1d0e1699a911eb46d7bd4 (patch) | |
tree | 023dc301ca962585e756be2e5afe4fbd025a0182 /libmpcodecs/vf_expand.c | |
parent | 846f4abc185624d3969c600b2c01c9af57909fb1 (diff) | |
download | mpv-c20f4d0b428109bd9db1d0e1699a911eb46d7bd4.tar.bz2 mpv-c20f4d0b428109bd9db1d0e1699a911eb46d7bd4.tar.xz |
better planar support, chroma subsampling support and Y8/Y800 support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6540 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs/vf_expand.c')
-rw-r--r-- | libmpcodecs/vf_expand.c | 36 |
1 files changed, 6 insertions, 30 deletions
diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c index 2cf5069c22..64e71c723a 100644 --- a/libmpcodecs/vf_expand.c +++ b/libmpcodecs/vf_expand.c @@ -199,20 +199,10 @@ static void get_image(struct vf_instance_s* vf, mp_image_t *mpi){ if(mpi->flags&MP_IMGFLAG_PLANAR){ mpi->planes[0]=vf->priv->dmpi->planes[0]+ vf->priv->exp_y*vf->priv->dmpi->stride[0]+vf->priv->exp_x; - if (mpi->imgfmt == IMGFMT_YVU9) - { mpi->planes[1]=vf->priv->dmpi->planes[1]+ - (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>2); + (vf->priv->exp_y>>mpi->chroma_y_shift)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>mpi->chroma_x_shift); mpi->planes[2]=vf->priv->dmpi->planes[2]+ - (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>2); - } - else - { - mpi->planes[1]=vf->priv->dmpi->planes[1]+ - (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>1); - mpi->planes[2]=vf->priv->dmpi->planes[2]+ - (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>1); - } + (vf->priv->exp_y>>mpi->chroma_y_shift)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>mpi->chroma_x_shift); mpi->stride[1]=vf->priv->dmpi->stride[1]; mpi->stride[2]=vf->priv->dmpi->stride[2]; } else { @@ -246,28 +236,14 @@ static void put_image(struct vf_instance_s* vf, mp_image_t *mpi){ vf->priv->exp_y*vf->priv->dmpi->stride[0]+vf->priv->exp_x, mpi->planes[0], mpi->w, mpi->h, vf->priv->dmpi->stride[0],mpi->stride[0]); - if (mpi->imgfmt == IMGFMT_YVU9) - { - memcpy_pic(vf->priv->dmpi->planes[1]+ - (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>2), - mpi->planes[1], mpi->w>>2, mpi->h>>2, - vf->priv->dmpi->stride[1],mpi->stride[1]); - memcpy_pic(vf->priv->dmpi->planes[2]+ - (vf->priv->exp_y>>2)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>2), - mpi->planes[2], mpi->w>>2, mpi->h>>2, - vf->priv->dmpi->stride[2],mpi->stride[2]); - } - else - { memcpy_pic(vf->priv->dmpi->planes[1]+ - (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>1), - mpi->planes[1], mpi->w>>1, mpi->h>>1, + (vf->priv->exp_y>>mpi->chroma_y_shift)*vf->priv->dmpi->stride[1]+(vf->priv->exp_x>>mpi->chroma_x_shift), + mpi->planes[1], mpi->chroma_width, mpi->chroma_height, vf->priv->dmpi->stride[1],mpi->stride[1]); memcpy_pic(vf->priv->dmpi->planes[2]+ - (vf->priv->exp_y>>1)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>1), - mpi->planes[2], mpi->w>>1, mpi->h>>1, + (vf->priv->exp_y>>mpi->chroma_y_shift)*vf->priv->dmpi->stride[2]+(vf->priv->exp_x>>mpi->chroma_x_shift), + mpi->planes[2], mpi->chroma_width, mpi->chroma_height, vf->priv->dmpi->stride[2],mpi->stride[2]); - } } else { memcpy_pic(vf->priv->dmpi->planes[0]+ vf->priv->exp_y*vf->priv->dmpi->stride[0]+vf->priv->exp_x*(vf->priv->dmpi->bpp/8), |