Mercurial > mplayer.hg
changeset 5316:ce6f625f6682
I420 UV swapping fixed
author | arpi |
---|---|
date | Sun, 24 Mar 2002 19:14:40 +0000 |
parents | 75092614a37d |
children | 80fbb03b385a |
files | libvo/vo_xv.c |
diffstat | 1 files changed, 14 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_xv.c Sun Mar 24 19:01:01 2002 +0000 +++ b/libvo/vo_xv.c Sun Mar 24 19:14:40 2002 +0000 @@ -621,7 +621,8 @@ x/=2;y/=2;w/=2;h/=2; - dst = xvimage[current_buf]->data + image_width * image_height + image_width/2 * y + x; + dst = xvimage[current_buf]->data + image_width * image_height + (image_width>>1) * y + x; + if(image_format!=IMGFMT_YV12) dst+=(image_width>>1)*(image_height>>1); src = image[2]; if(w==stride[2] && w==image_width/2) memcpy(dst,src,w*h); else @@ -631,7 +632,9 @@ src+=stride[2]; dst+=image_width/2; } - dst = xvimage[current_buf]->data + image_width * image_height * 5 / 4 + image_width/2 * y + x; + + dst = xvimage[current_buf]->data + image_width * image_height + (image_width>>1) * y + x; + if(image_format==IMGFMT_YV12) dst+=(image_width>>1)*(image_height>>1); src = image[1]; if(w==stride[1] && w==image_width/2) memcpy(dst,src,w*h); else @@ -716,9 +719,15 @@ if(mpi->width==image_width){ if(mpi->flags&MP_IMGFLAG_PLANAR){ mpi->planes[0]=xvimage[current_buf]->data; - mpi->planes[2]=xvimage[current_buf]->data+image_width*image_height; -// mpi->planes[1]=xvimage[current_buf]->data+image_width*image_height*5/4; - mpi->planes[1]=mpi->planes[2]+(image_width>>1)*(image_height>>1); + if(mpi->flags&MP_IMGFLAG_SWAPPED){ + // I420 + mpi->planes[1]=xvimage[current_buf]->data+image_width*image_height; + mpi->planes[2]=mpi->planes[1]+(image_width>>1)*(image_height>>1); + } else { + // YV12 + mpi->planes[2]=xvimage[current_buf]->data+image_width*image_height; + mpi->planes[1]=mpi->planes[2]+(image_width>>1)*(image_height>>1); + } mpi->stride[0]=image_width; mpi->stride[1]=mpi->stride[2]=image_width/2; } else {