summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vf_expand.c
diff options
context:
space:
mode:
authoralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-06-23 21:08:31 +0000
committeralex <alex@b3059339-0415-0410-9bf9-f77b7e298cf2>2002-06-23 21:08:31 +0000
commitc20f4d0b428109bd9db1d0e1699a911eb46d7bd4 (patch)
tree023dc301ca962585e756be2e5afe4fbd025a0182 /libmpcodecs/vf_expand.c
parent846f4abc185624d3969c600b2c01c9af57909fb1 (diff)
downloadmpv-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.c36
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),