X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=src%2Fswfdump.c;h=3a87f4227956b8135dceb9f1caa08ad40950ae8b;hp=de5205879886ef9664d64211268123473b586ac3;hb=0e8807d9a620e8932bc67653321eaae1436fdd43;hpb=79754fc1e187365020989c8a2d1a1f6ac704e44f diff --git a/src/swfdump.c b/src/swfdump.c index de52058..3a87f42 100644 --- a/src/swfdump.c +++ b/src/swfdump.c @@ -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;}