From: Matthias Kramm Date: Wed, 12 Aug 2009 12:56:19 +0000 (+0200) Subject: added support for hardware-gpu & accelerated-blit header flags X-Git-Tag: version-0-9-1~312 X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=commitdiff_plain;h=ebb61a567502ebe4b3d3c4b3284964600fecd90b added support for hardware-gpu & accelerated-blit header flags --- diff --git a/lib/rfxswf.c b/lib/rfxswf.c index bd8cd17..d601a15 100644 --- a/lib/rfxswf.c +++ b/lib/rfxswf.c @@ -1561,8 +1561,19 @@ int WriteExtraTags(SWF*swf, writer_t*writer) } swf_DeleteTag(0, fileattrib); } else { - if(swf_WriteTag2(writer, has_fileattributes)<0) - return -1; + if(swf->fileAttributes) { + /* if we're writing a file out again where we might have possible + modified the fileattributes in the header, adjust the tag data */ + TAG*tt = swf_CopyTag(0,has_fileattributes); + U32 flags = swf_GetU32(tt) | swf->fileAttributes; + swf_ResetTag(tt, tt->id); + swf_SetU32(tt, flags); + if(swf_WriteTag2(writer, has_fileattributes)<0) return -1; + swf_DeleteTag(0, tt); + } else { + if(swf_WriteTag2(writer, has_fileattributes)<0) + return -1; + } } if(0 && !has_scenedescription) { TAG*scene = swf_InsertTag(0, ST_SCENEDESCRIPTION); diff --git a/src/swfcombine.1 b/src/swfcombine.1 index 350ecf6..0055221 100644 --- a/src/swfcombine.1 +++ b/src/swfcombine.1 @@ -1,4 +1,4 @@ -.TH swfcombine "1" "April 2009" "swfcombine" "swftools" +.TH swfcombine "1" "August 2009" "swfcombine" "swftools" .SH NAME swfcombine - a tool for combining swf (flash) files @@ -49,6 +49,9 @@ movie. swfcombine can be used to perform the latter. \fB\-v\fR, \fB\-\-verbose\fR Be verbose. Use more than one -v for greater effect .TP +\fB\-F\fR, \fB\-\-flashversion\fR + Set the flash version of the output file. +.TP \fB\-d\fR, \fB\-\-dummy\fR Don't require the presence of slave objects. Usually used together with \fB\-X\fR, \fB\-Y\fR or \fB\-r\fR. .TP @@ -77,6 +80,12 @@ movie. swfcombine can be used to perform the latter. \fB\-N\fR, \fB\-\-local-with-networking\fR Make output file "local-with-networking" .TP +\fB\-G\fR, \fB\-\-hardware-gpu\fR + Set the "use hardware gpu" bit in the output file +.TP +\fB\-B\fR, \fB\-\-accelerated-blit\fR + Set the "use accelerated blit" bit in the output file +.TP \fB\-L\fR, \fB\-\-local-with-filesystem\fR Make output file "local-with-filesystem" .TP diff --git a/src/swfcombine.c b/src/swfcombine.c index c488952..48847c2 100644 --- a/src/swfcombine.c +++ b/src/swfcombine.c @@ -42,6 +42,8 @@ struct config_t char isframe; char local_with_networking; char local_with_filesystem; + char accelerated_blit; + char hardware_gpu; int loglevel; int sizex; char hassizex; @@ -184,6 +186,16 @@ int args_callback_option(char*name,char*val) { config.local_with_filesystem = 1; return 0; } + else if (!strcmp(name, "B")) + { + config.accelerated_blit = 1; + return 0; + } + else if (!strcmp(name, "G")) + { + config.hardware_gpu = 1; + return 0; + } else if (!strcmp(name, "t") || !strcmp(name, "T")) { if(master_filename) { @@ -212,12 +224,12 @@ static struct options_t options[] = { {"o", "output"}, {"t", "stack"}, {"T", "stack1"}, -{"F", "version"}, {"m", "merge"}, {"a", "cat"}, {"l", "overlay"}, {"c", "clip"}, {"v", "verbose"}, +{"F", "flashversion"}, {"d", "dummy"}, {"f", "frame"}, {"x", "movex"}, @@ -226,7 +238,9 @@ static struct options_t options[] = { {"r", "rate"}, {"X", "width"}, {"Y", "height"}, -{"N", "local-with-network"}, +{"N", "local-with-networking"}, +{"G", "hardware-gpu"}, +{"B", "accelerated-blit"}, {"L", "local-with-filesystem"}, {"z", "zlib"}, {0,0} @@ -297,6 +311,7 @@ void args_callback_usage(char *name) printf("-l , --overlay Don't remove any master objects, only overlay new objects\n"); printf("-c , --clip Clip the slave objects by the corresponding master objects\n"); printf("-v , --verbose Be verbose. Use more than one -v for greater effect \n"); + printf("-F , --flashversion Set the flash version of the output file.\n"); printf("-d , --dummy Don't require slave objects (for changing movie attributes)\n"); printf("-f , --frame The following identifier is a frame or framelabel, not an id or objectname\n"); printf("-x , --movex x Adjust position of slave by pixels\n"); @@ -306,6 +321,8 @@ void args_callback_usage(char *name) printf("-X , --width Force movie bbox width to (default: use master width (not with -t))\n"); printf("-Y , --height Force movie bbox height to (default: use master height (not with -t))\n"); printf("-N , --local-with-networking Make output file \"local-with-networking\"\n"); + printf("-G , --hardware-gpu Set the \"use hardware gpu\" bit in the output file\n"); + printf("-B , --accelerated-blit Set the \"use accelerated blit\" bit in the output file\n"); printf("-L , --local-with-filesystem Make output file \"local-with-filesystem\"\n"); printf("-z , --zlib Enable Flash 6 (MX) Zlib Compression\n"); printf("\n"); @@ -1351,6 +1368,10 @@ int main(int argn, char *argv[]) newswf.fileAttributes &= ~FILEATTRIBUTE_USENETWORK; if(config.local_with_networking) newswf.fileAttributes |= FILEATTRIBUTE_USENETWORK; + if(config.accelerated_blit) + newswf.fileAttributes |= FILEATTRIBUTE_USEACCELERATEDBLIT; + if(config.hardware_gpu) + newswf.fileAttributes |= FILEATTRIBUTE_USEHARDWAREGPU; fi = open(outputname, O_BINARY|O_RDWR|O_TRUNC|O_CREAT, 0777); diff --git a/src/swfcombine.doc b/src/swfcombine.doc index de22fa0..f77e4a6 100644 --- a/src/swfcombine.doc +++ b/src/swfcombine.doc @@ -58,6 +58,10 @@ movie. swfcombine can be used to perform the latter. Force movie bbox height to (default: use master height (not with -t)) -N --local-with-networking Make output file "local-with-networking" +-G --hardware-gpu + Set the "use hardware gpu" bit in the output file +-B --accelerated-blit + Set the "use accelerated blit" bit in the output file -L --local-with-filesystem Make output file "local-with-filesystem" -z --zlib diff --git a/src/swfdump.c b/src/swfdump.c index d65e625..0d63c2c 100644 --- a/src/swfdump.c +++ b/src/swfdump.c @@ -1220,10 +1220,12 @@ int main (int argc,char ** argv) else if(tag->id == ST_FILEATTRIBUTES) { swf_SetTagPos(tag, 0); U32 flags = swf_GetU32(tag); - if(flags&1) printf(" usenetwork"); - if(flags&8) printf(" as3"); - if(flags&16) printf(" symbolclass"); - if(flags&~(1|8|16)) + if(flags&FILEATTRIBUTE_USENETWORK) printf(" usenetwork"); + if(flags&FILEATTRIBUTE_AS3) printf(" as3"); + if(flags&FILEATTRIBUTE_SYMBOLCLASS) printf(" symbolclass"); + if(flags&FILEATTRIBUTE_USEHARDWAREGPU) printf(" hardware-gpu"); + if(flags&FILEATTRIBUTE_USEACCELERATEDBLIT) printf(" accelerated-blit"); + if(flags&~(1|8|16|32|64)) printf(" flags=%02x", flags); } else if(tag->id == ST_DOABC) {