round timestamps up, k2 broadcast server seems to need it
[ffmpeg.git] / cws2fws.c
index 67ef96c..f81e2e2 100644 (file)
--- a/cws2fws.c
+++ b/cws2fws.c
@@ -1,12 +1,15 @@
 /*
- * cws2fws by Alex Beregszaszi <alex@fsn.hu>
+ * cws2fws by Alex Beregszaszi
+ * This file is placed in the public domain.
+ * Use the program however you see fit.
  *
  * This utility converts compressed Macromedia Flash files to uncompressed ones.
- *
  */
 
 #include <sys/stat.h>
 #include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <unistd.h>
 #include <zlib.h>
 
 #define dbgprintf
 #endif
 
-main(int argc, char *argv[])
+int main(int argc, char *argv[])
 {
-    int fd_in, fd_out, comp_len, uncomp_len, tag, i, last_out;
-    char buf_in[1024], buf_out[1024];
+    int fd_in, fd_out, comp_len, uncomp_len, i, last_out;
+    char buf_in[1024], buf_out[65536];
     z_stream zstream;
     struct stat statbuf;
 
@@ -73,7 +76,7 @@ main(int argc, char *argv[])
     zstream.opaque = NULL;
     inflateInit(&zstream);
 
-    for (i = 0; i < comp_len-4;)
+    for (i = 0; i < comp_len-8;)
     {
         int ret, len = read(fd_in, &buf_in, 1024);
 
@@ -84,12 +87,10 @@ main(int argc, char *argv[])
         zstream.next_in = &buf_in[0];
         zstream.avail_in = len;
         zstream.next_out = &buf_out[0];
-        zstream.avail_out = 1024;
+        zstream.avail_out = 65536;
 
         ret = inflate(&zstream, Z_SYNC_FLUSH);
-        if (ret == Z_STREAM_END || ret == Z_BUF_ERROR)
-            break;
-        if (ret != Z_OK)
+        if (ret != Z_STREAM_END && ret != Z_OK)
         {
             printf("Error while decompressing: %d\n", ret);
             inflateEnd(&zstream);
@@ -103,6 +104,9 @@ main(int argc, char *argv[])
         write(fd_out, &buf_out, zstream.total_out-last_out);
 
         i += len;
+
+        if (ret == Z_STREAM_END || ret == Z_BUF_ERROR)
+            break;
     }
 
     if (zstream.total_out != uncomp_len-8)
@@ -122,4 +126,5 @@ main(int argc, char *argv[])
     inflateEnd(&zstream);
     close(fd_in);
     close(fd_out);
+    return 0;
 }