comparison imgconvert.c @ 6963:cc2c5a21a0eb libavcodec

memcpy considering output width, not src linesize, fix segv with av_picture_pad
author bcoudurier
date Sun, 01 Jun 2008 02:28:33 +0000
parents 0e2576b1e753
children 5515e19b9137
comparison
equal deleted inserted replaced
6962:c4e281443310 6963:cc2c5a21a0eb
2061 2061
2062 if (src) { /* first line */ 2062 if (src) { /* first line */
2063 uint8_t *iptr = src->data[i]; 2063 uint8_t *iptr = src->data[i];
2064 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + 2064 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) +
2065 (padleft >> x_shift); 2065 (padleft >> x_shift);
2066 memcpy(optr, iptr, src->linesize[i]); 2066 memcpy(optr, iptr, (width - padleft - padright) >> x_shift);
2067 iptr += src->linesize[i]; 2067 iptr += src->linesize[i];
2068 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + 2068 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) +
2069 (dst->linesize[i] - (padright >> x_shift)); 2069 (dst->linesize[i] - (padright >> x_shift));
2070 yheight = (height - 1 - (padtop + padbottom)) >> y_shift; 2070 yheight = (height - 1 - (padtop + padbottom)) >> y_shift;
2071 for (y = 0; y < yheight; y++) { 2071 for (y = 0; y < yheight; y++) {
2072 memset(optr, color[i], (padleft + padright) >> x_shift); 2072 memset(optr, color[i], (padleft + padright) >> x_shift);
2073 memcpy(optr + ((padleft + padright) >> x_shift), iptr, 2073 memcpy(optr + ((padleft + padright) >> x_shift), iptr,
2074 src->linesize[i]); 2074 (width - padleft - padright) >> x_shift);
2075 iptr += src->linesize[i]; 2075 iptr += src->linesize[i];
2076 optr += dst->linesize[i]; 2076 optr += dst->linesize[i];
2077 } 2077 }
2078 } 2078 }
2079 2079