comparison vidix/drivers/mach64_vid.c @ 9880:afa6ebcbb50d

fix i420 handling, bug found by rgselk at IRC <rgselknospam@yahoo.com>
author alex
date Tue, 08 Apr 2003 16:23:09 +0000
parents f6d2772efca3
children 6e35326c742f
comparison
equal deleted inserted replaced
9879:ea743bdf7e4d 9880:afa6ebcbb50d
789 if(is_420) 789 if(is_420)
790 { 790 {
791 config->offset.y= 0; 791 config->offset.y= 0;
792 config->offset.u= (pitch*src_h + 15)&~15; 792 config->offset.u= (pitch*src_h + 15)&~15;
793 config->offset.v= (config->offset.u + (pitch*src_h>>2) + 15)&~15; 793 config->offset.v= (config->offset.u + (pitch*src_h>>2) + 15)&~15;
794
795 src_offset_y= config->offset.y + top*pitch + left;
796 src_offset_u= config->offset.u + (top*pitch>>2) + (left>>1);
797 src_offset_v= config->offset.v + (top*pitch>>2) + (left>>1);
798 794
799 if(besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV) 795 if(besr.fourcc == IMGFMT_I420 || besr.fourcc == IMGFMT_IYUV)
800 { 796 {
801 uint32_t tmp; 797 uint32_t tmp;
802 tmp = config->offset.u; 798 tmp = config->offset.u;
803 config->offset.u = config->offset.v; 799 config->offset.u = config->offset.v;
804 config->offset.v = tmp; 800 config->offset.v = tmp;
805 } 801 }
802
803 src_offset_y= config->offset.y + top*pitch + left;
804 src_offset_u= config->offset.u + (top*pitch>>2) + (left>>1);
805 src_offset_v= config->offset.v + (top*pitch>>2) + (left>>1);
806 } 806 }
807 else if(besr.fourcc == IMGFMT_YVU9) 807 else if(besr.fourcc == IMGFMT_YVU9)
808 { 808 {
809 config->offset.y= 0; 809 config->offset.y= 0;
810 config->offset.u= (pitch*src_h + 15)&~15; 810 config->offset.u= (pitch*src_h + 15)&~15;