X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fmodules%2Fswfbits.c;h=73159de1c29366d90b3f6178465a3777590e1506;hb=ac58a40c594fa441eb4192cc4c86068372a7f18e;hp=70a7729562fdfa3c20f49e891cc4c06a912a556e;hpb=aee9de2c6eb23628e54b6896f5b441d9b39317c1;p=swftools.git diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index 70a7729..73159de 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -138,6 +138,26 @@ void swf_SetJPEGBits2(TAG * tag,U16 width,U16 height,RGBA* bitmap, int quality) swf_SetJPEGBitsFinish(jpeg); } +void swf_GetJPEGSize(char * fname, int*width, int*height) +{ struct jpeg_decompress_struct cinfo; + struct jpeg_error_mgr jerr; + FILE * fi; + *width = 0; + *height = 0; + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_decompress(&cinfo); + if ((fi=fopen(fname,"rb"))==NULL) { + fprintf(stderr, "rfxswf: file open error\n"); + return; + } + jpeg_stdio_src(&cinfo, fi); + jpeg_read_header(&cinfo, TRUE); + *width = cinfo.image_width; + *height = cinfo.image_height; + jpeg_destroy_decompress(&cinfo); + fclose(fi); +} + int swf_SetJPEGBits(TAG * t,char * fname,int quality) { struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; @@ -329,18 +349,6 @@ int swf_SetLosslessBits(TAG * t,U16 width,U16 height,void * bitmap,U8 bitmap_fla } else res = -3; // zlib error } - - while(t->len < 64) { /* actually, 63 and above is o.k., but let's stay on the safe side */ - - /* Flash players up to MX crash or do strange things if they encounter a - DefineLossless Tag with a payload of less than 63 bytes. They also - substitute the whole bitmap by a red rectangle. - - This loop fills up the tag with zeroes so that this doesn't happen. - */ - swf_SetU8(t, 0); - } - return res; } @@ -428,17 +436,6 @@ int swf_SetLosslessBitsIndexed(TAG * t,U16 width,U16 height,U8 * bitmap,RGBA * p if (!palette) free(pal); - while(t->len < 64) { /* actually, 63 and above is o.k., but let's stay on the safe side */ - - /* Flash players up to MX crash or do strange things if they encounter a - DefineLossless(2) Tag with a payload of less than 63 bytes. They also - substitute the whole bitmap by a red rectangle. - - This loop fills up the tag with zeroes so that this doesn't happen. - */ - swf_SetU8(t, 0); - } - return res; }