comparison snow.c @ 2604:b7e6c3d31c65 libavcodec

Snow segfault bug in revision 1.43 patch by (Yartrebo /yartrebo earthlink net/)
author michael
date Wed, 13 Apr 2005 01:57:19 +0000
parents 5ec55feb6fdd
children 39ef4c5454f0
comparison
equal deleted inserted replaced
2603:37cdd1a1174a 2604:b7e6c3d31c65
2756 if(s->keyframe || (s->avctx->debug&512)){ 2756 if(s->keyframe || (s->avctx->debug&512)){
2757 if(mb_y==mb_h) 2757 if(mb_y==mb_h)
2758 return; 2758 return;
2759 2759
2760 if(add){ 2760 if(add){
2761 for(y=block_w*mb_y; y<block_w*(mb_y+1); y++) 2761 for(y=block_w*mb_y; y<FFMIN(h,block_w*(mb_y+1)); y++)
2762 { 2762 {
2763 // DWTELEM * line = slice_buffer_get_line(sb, y); 2763 // DWTELEM * line = slice_buffer_get_line(sb, y);
2764 DWTELEM * line = sb->line[y]; 2764 DWTELEM * line = sb->line[y];
2765 for(x=0; x<w; x++) 2765 for(x=0; x<w; x++)
2766 { 2766 {
2770 if(v&(~255)) v= ~(v>>31); 2770 if(v&(~255)) v= ~(v>>31);
2771 dst8[x + y*ref_stride]= v; 2771 dst8[x + y*ref_stride]= v;
2772 } 2772 }
2773 } 2773 }
2774 }else{ 2774 }else{
2775 for(y=block_w*mb_y; y<block_w*(mb_y+1); y++) 2775 for(y=block_w*mb_y; y<FFMIN(h,block_w*(mb_y+1)); y++)
2776 { 2776 {
2777 // DWTELEM * line = slice_buffer_get_line(sb, y); 2777 // DWTELEM * line = slice_buffer_get_line(sb, y);
2778 DWTELEM * line = sb->line[y]; 2778 DWTELEM * line = sb->line[y];
2779 for(x=0; x<w; x++) 2779 for(x=0; x<w; x++)
2780 { 2780 {
2824 if(s->keyframe || (s->avctx->debug&512)){ 2824 if(s->keyframe || (s->avctx->debug&512)){
2825 if(mb_y==mb_h) 2825 if(mb_y==mb_h)
2826 return; 2826 return;
2827 2827
2828 if(add){ 2828 if(add){
2829 for(y=block_w*mb_y; y<block_w*(mb_y+1); y++){ 2829 for(y=block_w*mb_y; y<FFMIN(h,block_w*(mb_y+1)); y++){
2830 for(x=0; x<w; x++){ 2830 for(x=0; x<w; x++){
2831 int v= buf[x + y*w] + (128<<FRAC_BITS) + (1<<(FRAC_BITS-1)); 2831 int v= buf[x + y*w] + (128<<FRAC_BITS) + (1<<(FRAC_BITS-1));
2832 v >>= FRAC_BITS; 2832 v >>= FRAC_BITS;
2833 if(v&(~255)) v= ~(v>>31); 2833 if(v&(~255)) v= ~(v>>31);
2834 dst8[x + y*ref_stride]= v; 2834 dst8[x + y*ref_stride]= v;
2835 } 2835 }
2836 } 2836 }
2837 }else{ 2837 }else{
2838 for(y=block_w*mb_y; y<block_w*(mb_y+1); y++){ 2838 for(y=block_w*mb_y; y<FFMIN(h,block_w*(mb_y+1)); y++){
2839 for(x=0; x<w; x++){ 2839 for(x=0; x<w; x++){
2840 buf[x + y*w]-= 128<<FRAC_BITS; 2840 buf[x + y*w]-= 128<<FRAC_BITS;
2841 } 2841 }
2842 } 2842 }
2843 } 2843 }