X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fswfdump.c;h=0278ec89d836b6040916d22878ec9a510ceda58c;hb=7298bec4a4b27b4f645b75a0ee6443acb31fbf5a;hp=e7764031f326f0b1bce5dd13f0a724e8f16e1442;hpb=5f9742beec4337b37cf365afbea5b5c682847ccf;p=swftools.git diff --git a/src/swfdump.c b/src/swfdump.c index e776403..0278ec8 100644 --- a/src/swfdump.c +++ b/src/swfdump.c @@ -49,6 +49,7 @@ struct options_t options[] = {"t","text"}, {"X","width"}, {"Y","height"}, + {"f","frames"}, {"r","rate"}, {"e","html"}, {"u","used"}, @@ -89,6 +90,10 @@ int args_callback_option(char*name,char*val) xy |= 4; return 0; } + else if(name[0]=='f') { + xy |= 8; + return 0; + } else if(name[0]=='d') { hex = 1; return 0; @@ -115,6 +120,7 @@ void args_callback_usage(char*name) printf("\t-X , --width\t\t Prints out a string of the form \"-X width\"\n"); printf("\t-Y , --height\t\t Prints out a string of the form \"-Y height\"\n"); printf("\t-r , --rate\t\t Prints out a string of the form \"-r rate\"\n"); + printf("\t-f , --frames\t\t Prints out a string of the form \"-f framenum\"\n"); printf("\t-a , --action\t\t Disassemble action tags\n"); printf("\t-t , --text\t\t Show text data\n"); printf("\t-d , --hex\t\t Print hex output of tag data, too\n"); @@ -445,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; @@ -514,6 +535,12 @@ int main (int argc,char ** argv) if(xy&4) printf("-r %d", swf.frameRate*100/256); + if((xy&7) && (xy&8)) + printf(" "); + + if(xy&8) + printf("-f %d", swf.frameCount); + printf("\n"); return 0; } @@ -657,9 +684,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;}