Lines Matching defs:bpp
3390 the out buffer must have (w * h * bpp + 7) / 8 bytes, where bpp is the bits per pixel of the output color type
3391 (lodepng_get_bpp) for < 8 bpp images, there may _not_ be padding bits at the end of scanlines.
3507 int bpp = lodepng_get_bpp(mode);
3508 profile->maxnumcolors = bpp == 1 ? 2 : (bpp == 2 ? 4 : (bpp == 4 ? 16 : 256));
3912 bpp: bits per pixel
3913 "padded" is only relevant if bpp is less than 8 and a scanline or image does not
3917 size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, unsigned bpp)
3936 + ((passw[i] && passh[i]) ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) : 0);
3938 padded_passstart[i + 1] = padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7) / 8);
3940 passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7) / 8;
4082 static unsigned unfilter(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp)
4088 w and h are image dimensions or dimensions of reduced image, bpp is bits per pixel
4095 /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/
4096 size_t bytewidth = (bpp + 7) / 8;
4097 size_t linebytes = (w * bpp + 7) / 8;
4117 bpp: bits per pixel
4118 out has the following size in bits: w * h * bpp.
4120 out must be big enough AND must be 0 everywhere if bpp < 8 in the current implementation
4122 NOTE: comments about padding bits are only relevant if bpp < 8
4124 static void Adam7_deinterlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp)
4130 Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
4132 if(bpp >= 8)
4137 size_t bytewidth = bpp / 8;
4150 else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/
4155 unsigned ilinebits = bpp * passw[i];
4156 unsigned olinebits = bpp * w;
4161 ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp);
4162 obp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp;
4163 for(b = 0; b < bpp; b++)
4210 *) if no Adam7: 1) unfilter 2) remove padding bits (= posible extra bits per scanline if bpp < 8)
4214 unsigned bpp = lodepng_get_bpp(&info_png->color);
4215 if(bpp == 0) return 31; /*error: invalid colortype*/
4219 if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8)
4221 CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp));
4222 removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h);
4225 else CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp));
4232 Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
4236 CERROR_TRY_RETURN(unfilter(&in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], passh[i], bpp));
4239 if(bpp < 8)
4243 removePaddingBits(&in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp,
4244 ((passw[i] * bpp + 7) / 8) * 8, passh[i]);
4248 Adam7_deinterlace(out, in, w, h, bpp);
5236 out must be a buffer with as size: h + (w * h * bpp + 7) / 8, because there are
5240 unsigned bpp = lodepng_get_bpp(info);
5242 size_t linebytes = (w * bpp + 7) / 8;
5243 /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per pixel otherwise*/
5244 size_t bytewidth = (bpp + 7) / 8;
5266 if(bpp == 0) return 31; /*error: invalid color type*/
5478 bpp: bits per pixel
5480 in has the following size in bits: w * h * bpp.
5482 NOTE: comments about padding bits are only relevant if bpp < 8
5484 static void Adam7_interlace(unsigned char* out, const unsigned char* in, unsigned w, unsigned h, unsigned bpp)
5490 Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
5492 if(bpp >= 8)
5497 size_t bytewidth = bpp / 8;
5510 else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit pointers*/
5515 unsigned ilinebits = bpp * passw[i];
5516 unsigned olinebits = bpp * w;
5521 ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp;
5522 obp = (8 * passstart[i]) + (y * ilinebits + x * bpp);
5523 for(b = 0; b < bpp; b++)
5541 *) if no Adam7: 1) add padding bits (= posible extra bits per scanline if bpp < 8) 2) filter
5544 unsigned bpp = lodepng_get_bpp(&info_png->color);
5549 *outsize = h + (h * ((w * bpp + 7) / 8)); /*image size plus an extra byte per scanline + possible padding bits*/
5556 if(bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8)
5558 unsigned char* padded = (unsigned char*)lodepng_malloc(h * ((w * bpp + 7) / 8));
5562 addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h);
5580 Adam7_getpassvalues(passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp);
5593 Adam7_interlace(adam7, in, w, h, bpp);
5596 if(bpp < 8)
5601 ((passw[i] * bpp + 7) / 8) * 8, passw[i] * bpp, passh[i]);
5957 case 31: return "illegal PNG color type or bpp";