added support for hardware-gpu & accelerated-blit header flags
authorMatthias Kramm <kramm@quiss.org>
Wed, 12 Aug 2009 12:56:19 +0000 (14:56 +0200)
committerMatthias Kramm <kramm@quiss.org>
Wed, 12 Aug 2009 12:56:19 +0000 (14:56 +0200)
lib/rfxswf.c
src/swfcombine.1
src/swfcombine.c
src/swfcombine.doc
src/swfdump.c

index bd8cd17..d601a15 100644 (file)
@@ -1561,8 +1561,19 @@ int WriteExtraTags(SWF*swf, writer_t*writer)
             }
             swf_DeleteTag(0, fileattrib);
         } else {
             }
             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);
         }
         if(0 && !has_scenedescription) {
             TAG*scene = swf_InsertTag(0, ST_SCENEDESCRIPTION);
index 350ecf6..0055221 100644 (file)
@@ -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
 
 .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\-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
 \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\-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
 \fB\-L\fR, \fB\-\-local-with-filesystem\fR 
     Make output file "local-with-filesystem"
 .TP
index c488952..48847c2 100644 (file)
@@ -42,6 +42,8 @@ struct config_t
    char isframe;
    char local_with_networking;
    char local_with_filesystem;
    char isframe;
    char local_with_networking;
    char local_with_filesystem;
+   char accelerated_blit;
+   char hardware_gpu;
    int loglevel;
    int sizex;
    char hassizex;
    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;
     }
        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) {
     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"},
 {"o", "output"},
 {"t", "stack"},
 {"T", "stack1"},
-{"F", "version"},
 {"m", "merge"},
 {"a", "cat"},
 {"l", "overlay"},
 {"c", "clip"},
 {"v", "verbose"},
 {"m", "merge"},
 {"a", "cat"},
 {"l", "overlay"},
 {"c", "clip"},
 {"v", "verbose"},
+{"F", "flashversion"},
 {"d", "dummy"},
 {"f", "frame"},
 {"x", "movex"},
 {"d", "dummy"},
 {"f", "frame"},
 {"x", "movex"},
@@ -226,7 +238,9 @@ static struct options_t options[] = {
 {"r", "rate"},
 {"X", "width"},
 {"Y", "height"},
 {"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}
 {"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("-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 <xpos>            x Adjust position of slave by <xpos> pixels\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 <xpos>            x Adjust position of slave by <xpos> pixels\n");
@@ -306,6 +321,8 @@ void args_callback_usage(char *name)
     printf("-X , --width <width>           Force movie bbox width to <width> (default: use master width (not with -t))\n");
     printf("-Y , --height <height>          Force movie bbox height to <height> (default: use master height (not with -t))\n");
     printf("-N , --local-with-networking     Make output file \"local-with-networking\"\n");
     printf("-X , --width <width>           Force movie bbox width to <width> (default: use master width (not with -t))\n");
     printf("-Y , --height <height>          Force movie bbox height to <height> (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 <zlib>             Enable Flash 6 (MX) Zlib Compression\n");
     printf("\n");
     printf("-L , --local-with-filesystem     Make output file \"local-with-filesystem\"\n");
     printf("-z , --zlib <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;
         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);
 
 
     fi = open(outputname, O_BINARY|O_RDWR|O_TRUNC|O_CREAT, 0777);
 
index de22fa0..f77e4a6 100644 (file)
@@ -58,6 +58,10 @@ movie. swfcombine can be used to perform the latter.
     Force movie bbox height to <height> (default: use master height (not with -t))
 -N  --local-with-networking 
     Make output file "local-with-networking"
     Force movie bbox height to <height> (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    <zlib>        
 -L  --local-with-filesystem
     Make output file "local-with-filesystem"
 -z  --zlib    <zlib>        
index d65e625..0d63c2c 100644 (file)
@@ -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);
         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) {
                 printf(" flags=%02x", flags);
         }
         else if(tag->id == ST_DOABC) {