Mercurial > libavcodec.hg
comparison imgconvert.c @ 4359:d276d6eed6a0 libavcodec
Avoid branches in the loop and solve a gcc warning
author | lu_zero |
---|---|
date | Wed, 17 Jan 2007 11:02:07 +0000 |
parents | 0924cc1db086 |
children | ce643a22f049 |
comparison
equal
deleted
inserted
replaced
4358:0924cc1db086 | 4359:d276d6eed6a0 |
---|---|
2254 */ | 2254 */ |
2255 int img_pad(AVPicture *dst, const AVPicture *src, int height, int width, | 2255 int img_pad(AVPicture *dst, const AVPicture *src, int height, int width, |
2256 int pix_fmt, int padtop, int padbottom, int padleft, int padright, | 2256 int pix_fmt, int padtop, int padbottom, int padleft, int padright, |
2257 int *color) | 2257 int *color) |
2258 { | 2258 { |
2259 uint8_t *optr, *iptr; | 2259 uint8_t *optr; |
2260 int y_shift; | 2260 int y_shift; |
2261 int x_shift; | 2261 int x_shift; |
2262 int yheight; | 2262 int yheight; |
2263 int i, y; | 2263 int i, y; |
2264 | 2264 |
2272 if (padtop || padleft) { | 2272 if (padtop || padleft) { |
2273 memset(dst->data[i], color[i], | 2273 memset(dst->data[i], color[i], |
2274 dst->linesize[i] * (padtop >> y_shift) + (padleft >> x_shift)); | 2274 dst->linesize[i] * (padtop >> y_shift) + (padleft >> x_shift)); |
2275 } | 2275 } |
2276 | 2276 |
2277 if (padleft || padright || src) { | 2277 if (padleft || padright) { |
2278 if (src) { /* first line */ | |
2279 iptr = src->data[i]; | |
2280 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + | |
2281 (padleft >> x_shift); | |
2282 memcpy(optr, iptr, src->linesize[i]); | |
2283 iptr += src->linesize[i]; | |
2284 } | |
2285 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + | 2278 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + |
2286 (dst->linesize[i] - (padright >> x_shift)); | 2279 (dst->linesize[i] - (padright >> x_shift)); |
2287 yheight = (height - 1 - (padtop + padbottom)) >> y_shift; | 2280 yheight = (height - 1 - (padtop + padbottom)) >> y_shift; |
2288 for (y = 0; y < yheight; y++) { | 2281 for (y = 0; y < yheight; y++) { |
2289 memset(optr, color[i], (padleft + padright) >> x_shift); | 2282 memset(optr, color[i], (padleft + padright) >> x_shift); |
2290 if (src) { | 2283 optr += dst->linesize[i]; |
2291 memcpy(optr + ((padleft + padright) >> x_shift), iptr, | 2284 } |
2292 src->linesize[i]); | 2285 } |
2293 iptr += src->linesize[i]; | 2286 |
2294 } | 2287 if (src) { /* first line */ |
2288 uint8_t *iptr = src->data[i]; | |
2289 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + | |
2290 (padleft >> x_shift); | |
2291 memcpy(optr, iptr, src->linesize[i]); | |
2292 iptr += src->linesize[i]; | |
2293 optr = dst->data[i] + dst->linesize[i] * (padtop >> y_shift) + | |
2294 (dst->linesize[i] - (padright >> x_shift)); | |
2295 yheight = (height - 1 - (padtop + padbottom)) >> y_shift; | |
2296 for (y = 0; y < yheight; y++) { | |
2297 memset(optr, color[i], (padleft + padright) >> x_shift); | |
2298 memcpy(optr + ((padleft + padright) >> x_shift), iptr, | |
2299 src->linesize[i]); | |
2300 iptr += src->linesize[i]; | |
2295 optr += dst->linesize[i]; | 2301 optr += dst->linesize[i]; |
2296 } | 2302 } |
2297 } | 2303 } |
2298 | 2304 |
2299 if (padbottom || padright) { | 2305 if (padbottom || padright) { |