Revert my two previous deliveries (back to r8806) to aply the good patch for vstats
authorBenoit Fouet <benoit.fouet@free.fr>
Wed, 25 Apr 2007 13:48:36 +0000 (13:48 +0000)
committerBenoit Fouet <benoit.fouet@free.fr>
Wed, 25 Apr 2007 13:48:36 +0000 (13:48 +0000)
Originally committed as revision 8809 to svn://svn.ffmpeg.org/ffmpeg/trunk

doc/ffmpeg-doc.texi
ffmpeg.c

index 2d6ad54..b72e7a0 100644 (file)
@@ -585,8 +585,6 @@ The alternative is to deinterlace the input stream with
 Calculate PSNR of compressed frames.
 @item -vstats
 Dump video coding statistics to @file{vstats_HHMMSS.log}.
 Calculate PSNR of compressed frames.
 @item -vstats
 Dump video coding statistics to @file{vstats_HHMMSS.log}.
-@item -vstats_file file
-Dump video coding statistics to @var{file}.
 @item -vhook module
 Insert video processing @var{module}. @var{module} contains the module
 name and its parameters separated by spaces.
 @item -vhook module
 Insert video processing @var{module}. @var{module} contains the module
 name and its parameters separated by spaces.
index 751ba08..e54947f 100644 (file)
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -166,6 +166,7 @@ static int do_benchmark = 0;
 static int do_hex_dump = 0;
 static int do_pkt_dump = 0;
 static int do_psnr = 0;
 static int do_hex_dump = 0;
 static int do_pkt_dump = 0;
 static int do_psnr = 0;
+static int do_vstats = 0;
 static int do_pass = 0;
 static char *pass_logfilename = NULL;
 static int audio_stream_copy = 0;
 static int do_pass = 0;
 static char *pass_logfilename = NULL;
 static int audio_stream_copy = 0;
@@ -176,7 +177,6 @@ static int audio_sync_method= 0;
 static int copy_ts= 0;
 static int opt_shortest = 0; //
 static int video_global_header = 0;
 static int copy_ts= 0;
 static int opt_shortest = 0; //
 static int video_global_header = 0;
-static FILE *fvstats= NULL;
 
 static int rate_emu = 0;
 
 
 static int rate_emu = 0;
 
@@ -841,11 +841,28 @@ static double psnr(double d){
 static void do_video_stats(AVFormatContext *os, AVOutputStream *ost,
                            int frame_size)
 {
 static void do_video_stats(AVFormatContext *os, AVOutputStream *ost,
                            int frame_size)
 {
+    static FILE *fvstats=NULL;
+    char filename[40];
+    time_t today2;
+    struct tm *today;
     AVCodecContext *enc;
     int frame_number;
     int64_t ti;
     double ti1, bitrate, avg_bitrate;
 
     AVCodecContext *enc;
     int frame_number;
     int64_t ti;
     double ti1, bitrate, avg_bitrate;
 
+    if (!fvstats) {
+        today2 = time(NULL);
+        today = localtime(&today2);
+        snprintf(filename, sizeof(filename), "vstats_%02d%02d%02d.log", today->tm_hour,
+                                               today->tm_min,
+                                               today->tm_sec);
+        fvstats = fopen(filename,"w");
+        if (!fvstats) {
+            perror("fopen");
+            exit(1);
+        }
+    }
+
     ti = INT64_MAX;
     enc = ost->st->codec;
     if (enc->codec_type == CODEC_TYPE_VIDEO) {
     ti = INT64_MAX;
     enc = ost->st->codec;
     if (enc->codec_type == CODEC_TYPE_VIDEO) {
@@ -1180,7 +1197,7 @@ static int output_packet(AVInputStream *ist, int ist_index,
                         case CODEC_TYPE_VIDEO:
                             do_video_out(os, ost, ist, &picture, &frame_size);
                             video_size += frame_size;
                         case CODEC_TYPE_VIDEO:
                             do_video_out(os, ost, ist, &picture, &frame_size);
                             video_size += frame_size;
-                            if (fvstats && frame_size)
+                            if (do_vstats && frame_size)
                                 do_video_stats(os, ost, frame_size);
                             break;
                         case CODEC_TYPE_SUBTITLE:
                                 do_video_stats(os, ost, frame_size);
                             break;
                         case CODEC_TYPE_SUBTITLE:
@@ -3432,32 +3449,6 @@ static void opt_target(const char *arg)
     }
 }
 
     }
 }
 
-static void opt_vstats_file (const char *arg)
-{
-    if (!fvstats)
-    {
-        fvstats = fopen(arg ,"w");
-        if (!fvstats) {
-            perror("fopen");
-            exit(1);
-        }
-    }
-}
-
-static void opt_vstats (void)
-{
-    if (!fvstats) {
-        char filename[40];
-        time_t today2 = time(NULL);
-        struct tm *today = localtime(&today2);
-
-        snprintf(filename, sizeof(filename), "vstats_%02d%02d%02d.log", today->tm_hour,
-                                               today->tm_min,
-                                               today->tm_sec);
-        opt_vstats_file(filename);
-    }
-}
-
 static void opt_video_bsf(const char *arg)
 {
     AVBitStreamFilterContext *bsfc= av_bitstream_filter_init(arg); //FIXME split name and args for filter at '='
 static void opt_video_bsf(const char *arg)
 {
     AVBitStreamFilterContext *bsfc= av_bitstream_filter_init(arg); //FIXME split name and args for filter at '='
@@ -3619,8 +3610,7 @@ const OptionDef options[] = {
     { "deinterlace", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_deinterlace},
       "deinterlace pictures" },
     { "psnr", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_psnr}, "calculate PSNR of compressed frames" },
     { "deinterlace", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_deinterlace},
       "deinterlace pictures" },
     { "psnr", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_psnr}, "calculate PSNR of compressed frames" },
-    { "vstats", OPT_EXPERT | OPT_VIDEO, {(void*)&opt_vstats}, "dump video coding statistics to file" },
-    { "vstats_file", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_vstats_file}, "dump video coding statistics to file", "file" },
+    { "vstats", OPT_BOOL | OPT_EXPERT | OPT_VIDEO, {(void*)&do_vstats}, "dump video coding statistics to file" },
     { "vhook", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)add_frame_hooker}, "insert video processing module", "module" },
     { "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix}, "specify intra matrix coeffs", "matrix" },
     { "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix}, "specify inter matrix coeffs", "matrix" },
     { "vhook", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)add_frame_hooker}, "insert video processing module", "module" },
     { "intra_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_intra_matrix}, "specify intra matrix coeffs", "matrix" },
     { "inter_matrix", HAS_ARG | OPT_EXPERT | OPT_VIDEO, {(void*)opt_inter_matrix}, "specify inter matrix coeffs", "matrix" },
@@ -3816,11 +3806,6 @@ int main(int argc, char **argv)
 
     av_free(intra_matrix);
     av_free(inter_matrix);
 
     av_free(intra_matrix);
     av_free(inter_matrix);
-
-    if (fvstats)
-        fclose(fvstats);
-    av_free(vstats_filename);
-
     av_free(opt_names);
 
 #ifdef CONFIG_POWERPC_PERF
     av_free(opt_names);
 
 #ifdef CONFIG_POWERPC_PERF