Mercurial > libavcodec.hg
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 |