implemented --framerate.
[swftools.git] / src / swfdump.c
index de52058..3a87f42 100644 (file)
@@ -451,6 +451,21 @@ void dumperror(const char* format, ...)
        printf("==== Error: %s ====\n", buf);
 }
 
+static char strbuf[800];
+static int bufpos=0;
+
+char* timestring(double f)
+{
+    int hours   = (int)(f/3600);
+    int minutes = (int)((f-hours*3600)/60);
+    int seconds = (int)((f-hours*3600-minutes*60));
+    int useconds = (int)((f-(int)f)*1000+0.5);
+    bufpos+=100;
+    bufpos%=800;
+    sprintf(&strbuf[bufpos], "%02d:%02d:%02d,%03d",hours,minutes,seconds,useconds);
+    return &strbuf[bufpos];
+}
+
 int main (int argc,char ** argv)
 { 
     TAG*tag;
@@ -638,7 +653,23 @@ int main (int argc,char ** argv)
             printf(" frees object %04d", swf_GetPlaceID(tag));
         }
        else if(tag->id == ST_STARTSOUND) {
-           printf(" starts id %04d", swf_GetPlaceID(tag));
+           U8 flags;
+           U16 id;
+           id = swf_GetU16(tag);
+           flags = swf_GetU8(tag);
+           if(flags & 32)
+               printf(" stops sound with id %04d", id);
+           else
+               printf(" starts sound with id %04d", id);
+           if(flags & 16)
+               printf(" (if not already playing)");
+           if(flags & 1)
+               swf_GetU32(tag);
+           if(flags & 2)
+               swf_GetU32(tag);
+           if(flags & 4) {
+               printf(" looping %d times", swf_GetU16(tag));
+           }
        }
        else if(tag->id == ST_FRAMELABEL) {
            int l = strlen(tag->data);
@@ -669,9 +700,12 @@ int main (int argc,char ** argv)
                }
            }
            if(nframe == frame)
-               printf(" %d", frame);
+               printf(" %d (%s)", frame, timestring(frame*(256.0/(swf.frameRate+0.1))));
            else
-               printf(" %d-%d", frame, nframe);
+               printf(" %d-%d (%s-%s)", frame, nframe,
+                       timestring(frame*(256.0/(swf.frameRate+0.1))),
+                       timestring(nframe*(256.0/(swf.frameRate+0.1)))
+                       );
            if(label)
                printf(" (label \"%s\")", label);
            if(issprite) {spriteframe++; spriteframelabel = 0;}