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) {