Mercurial > mplayer.hg
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; |