[FFmpeg-devel] [PATCH] ffmpeg: extend -benchmark_all option to show elapsed time

Stefano Sabatini stefasab at gmail.com
Mon Jan 11 18:21:15 CET 2016


The value is useful to get a raw estimate of the expected
encoding/decoding time.

Also extend option documentation.
---
 doc/ffmpeg.texi | 6 ++++++
 ffmpeg.c        | 9 +++++++--
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
index a38a32e..9ea48bb 100644
--- a/doc/ffmpeg.texi
+++ b/doc/ffmpeg.texi
@@ -999,6 +999,12 @@ it will usually display as 0 if not supported.
 @item -benchmark_all (@emph{global})
 Show benchmarking information during the encode.
 Shows CPU time used in various steps (audio/video encode/decode).
+
+This option shows the following information for each processing step,
+in this order: the user process time (in microseconds), the elapsed
+relative time (in microseconds), the processing step type, and the
+relative stream.
+
 @item -timelimit @var{duration} (@emph{global})
 Exit after ffmpeg has been running for @var{duration} seconds.
 @item -dump (@emph{global})
diff --git a/ffmpeg.c b/ffmpeg.c
index 86a0960..24536d1 100644
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -129,7 +129,9 @@ static int nb_frames_dup = 0;
 static int nb_frames_drop = 0;
 static int64_t decode_error_stat[2];
 
-static int current_time;
+static int64_t current_time;
+static int64_t current_time_rel;
+
 AVIOContext *progress_avio = NULL;
 
 static uint8_t *subtitle_out;
@@ -608,6 +610,7 @@ static void update_benchmark(const char *fmt, ...)
 {
     if (do_benchmark_all) {
         int64_t t = getutime();
+        int64_t t_rel = av_gettime_relative();
         va_list va;
         char buf[1024];
 
@@ -615,8 +618,10 @@ static void update_benchmark(const char *fmt, ...)
             va_start(va, fmt);
             vsnprintf(buf, sizeof(buf), fmt, va);
             va_end(va);
-            av_log(NULL, AV_LOG_INFO, "bench: %8"PRIu64" %s \n", t - current_time, buf);
+            av_log(NULL, AV_LOG_INFO, "bench: %8"PRIu64" %8"PRIu64" %s \n",
+                   t - current_time, t_rel - current_time_rel, buf);
         }
+        current_time_rel = t_rel;
         current_time = t;
     }
 }
-- 
1.9.1



More information about the ffmpeg-devel mailing list