int bmpencoder(void *__iomem *vaddr, int width, int height, u8 data_format,
void *data, void (*fn)(void *, void *, int))
{
- uint32_t *d, *d1, *d2;
- uint8_t *dst, *yrgb, *uv, *y1, *y2;
- int y, u, v, r, g, b;
+ uint32_t *d = NULL, *d1 = NULL, *d2 = NULL;
+ uint8_t *dst = NULL, *yrgb = NULL, *uv = NULL, *y1 = NULL, *y2 = NULL;
+ int y = 0, u = 0, v = 0, r = 0, g = 0, b = 0;
int yu = width * 4 % 4;
int byteperline;
uint16_t *bmp_logo_palette;
uint32_t size;
uint16_t linesize;
+ int stride;
char *cmap_base;
char *src = bmp_addr;
char *dst = pdst;
pr_info("unsupport bit=%d now\n", infoheader.bitcount);
break;
case 24:
+ stride = ALIGN(*width * 3, 4);
if (flip)
- src += (*width) * (*height - 1) * 3;
+ src += stride * (*height - 1);
for (i = 0; i < *height; i++) {
memcpy(dst, src, 3 * (*width));
- dst += *width * 3;
- src += *width * 3;
+ dst += stride;
+ src += stride;
if (flip)
- src -= *width * 3 * 2;
+ src -= stride * 2;
}
*bits = 24;