From ec646624d627bef5c3d538be9e3b6dcad65bbf2e Mon Sep 17 00:00:00 2001 From: kramm Date: Fri, 21 Jan 2005 17:47:03 +0000 Subject: [PATCH] new function swf_RemoveJPEGTables() --- lib/modules/swfbits.c | 33 +++++++++++++++++++++++++++++++++ lib/rfxswf.h | 1 + 2 files changed, 34 insertions(+) diff --git a/lib/modules/swfbits.c b/lib/modules/swfbits.c index f761ae0..19dde1c 100644 --- a/lib/modules/swfbits.c +++ b/lib/modules/swfbits.c @@ -760,3 +760,36 @@ RGBA* swf_ExtractImage(TAG*tag, int*dwidth, int*dheight) #undef OUTBUFFER_SIZE + +void swf_RemoveJPEGTables(SWF*swf) +{ + TAG* tag = swf->firstTag; + TAG* tables_tag = 0; + while(tag) { + if(tag->id == ST_JPEGTABLES) { + tables_tag = tag; + } + tag = tag->next; + } + + if(!tables_tag) + return; + + tag = swf->firstTag; + while(tag) { + if(tag->id == ST_DEFINEBITSJPEG) { + void*data = rfx_alloc(tag->len); + swf_GetBlock(tag, data, tag->len); + swf_ResetTag(tag, ST_DEFINEBITSJPEG2); + swf_SetBlock(tag, tables_tag->data, tables_tag->len); + swf_SetBlock(tag, data, tag->len); + free(data); + } + tag = tag->next; + } + if(swf->firstTag == tables_tag) + swf->firstTag = tables_tag->next; + swf_DeleteTag(tables_tag); +} + + diff --git a/lib/rfxswf.h b/lib/rfxswf.h index 9225807..77fc4e9 100644 --- a/lib/rfxswf.h +++ b/lib/rfxswf.h @@ -714,6 +714,7 @@ int swf_SetJPEGBits(TAG * t,char * fname,int quality); void swf_SetJPEGBits2(TAG * t,U16 width,U16 height,RGBA * bitmap,int quality); int swf_SetJPEGBits3(TAG * tag,U16 width,U16 height,RGBA* bitmap, int quality); RGBA* swf_JPEG2TagToImage(TAG*tag, int*width, int*height); +void swf_RemoveJPEGTables(SWF*swf); #define BYTES_PER_SCANLINE(width) ((width+3)&0xfffffffc) -- 1.7.10.4