X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswfbits.c;h=eda68297e2818306fa536c500d4cac9715dbd5ae;hb=0784a8a882e7b98299fb6a90f0f9a7ebb322562b;hp=bbd8641c0ff745d1a8542db4d1ea2373a711e69b;hpb=6c3ab5574d31504d24710c2756899d49275c1a37;p=swftools.git diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index bbd8641..eda6829 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -289,8 +289,8 @@ void swf_SetJPEGBits2(TAG * tag, U16 width, U16 height, RGBA * bitmap, JPEGBITS *jpeg; int y; jpeg = swf_SetJPEGBitsStart(tag, width, height, quality); + U8 *scanline = (U8*)rfx_alloc(3 * width); for (y = 0; y < height; y++) { - U8 scanline[3 * width]; int x, p = 0; for (x = 0; x < width; x++) { scanline[p++] = bitmap[width * y + x].r; @@ -299,6 +299,7 @@ void swf_SetJPEGBits2(TAG * tag, U16 width, U16 height, RGBA * bitmap, } swf_SetJPEGBitsLine(jpeg, scanline); } + rfx_free(scanline); swf_SetJPEGBitsFinish(jpeg); } @@ -1060,8 +1061,8 @@ int swf_SetJPEGBits3(TAG * tag, U16 width, U16 height, RGBA * bitmap, int qualit pos = tag->len; swf_SetU32(tag, 0); //placeholder jpeg = swf_SetJPEGBitsStart(tag, width, height, quality); + U8 *scanline = (U8*)rfx_alloc(3 * width); for (y = 0; y < height; y++) { - U8 scanline[3 * width]; int x, p = 0; for (x = 0; x < width; x++) { //int ia = bitmap[width*y+x].a; @@ -1078,6 +1079,7 @@ int swf_SetJPEGBits3(TAG * tag, U16 width, U16 height, RGBA * bitmap, int qualit } swf_SetJPEGBitsLine(jpeg, scanline); } + rfx_free(scanline); swf_SetJPEGBitsFinish(jpeg); PUT32(&tag->data[pos], tag->len - pos - 4); @@ -1092,8 +1094,8 @@ int swf_SetJPEGBits3(TAG * tag, U16 width, U16 height, RGBA * bitmap, int qualit zs.next_out = data; zs.avail_out = OUTBUFFER_SIZE; + scanline = (U8*)rfx_alloc(width); for (y = 0; y < height; y++) { - U8 scanline[width]; int x, p = 0; for (x = 0; x < width; x++) { scanline[p++] = bitmap[width * y + x].a; @@ -1117,6 +1119,8 @@ int swf_SetJPEGBits3(TAG * tag, U16 width, U16 height, RGBA * bitmap, int qualit } } + rfx_free(scanline); + while (1) { int ret = deflate(&zs, Z_FINISH); if (ret != Z_OK && ret != Z_STREAM_END) {