On 02/01/16 18:37, Anton Khirnov wrote:
Quoting Luca Barbato (2016-01-02 14:43:14)
Make filter_complex-only input produce a report.
---
  avconv.c | 109 +++++++++++++++++++++++++++++++--------------------------------
  1 file changed, 54 insertions(+), 55 deletions(-)

diff --git a/avconv.c b/avconv.c
index 6b37d6e..edc5e0e 100644
--- a/avconv.c
+++ b/avconv.c
@@ -653,52 +653,6 @@ static void finish_output_stream(OutputStream *ost)
      }
  }

-/*
- * Read as many frames from possible from lavfi and encode them.
- *
- * Always read from the active stream with the lowest timestamp. If no frames
- * are available for it then return EAGAIN and wait for more input. This way we
- * can use lavfi sources that generate unlimited amount of frames without 
memory
- * usage exploding.
- */
-static int poll_filters(void)
-{
-    int i, ret = 0;
-
-    while (ret >= 0 && !received_sigterm) {
-        OutputStream *ost = NULL;
-        int64_t min_pts = INT64_MAX;
-
-        /* choose output stream with the lowest timestamp */
-        for (i = 0; i < nb_output_streams; i++) {
-            int64_t pts = output_streams[i]->sync_opts;
-
-            if (!output_streams[i]->filter || output_streams[i]->finished)
-                continue;
-
-            pts = av_rescale_q(pts, output_streams[i]->enc_ctx->time_base,
-                               AV_TIME_BASE_Q);
-            if (pts < min_pts) {
-                min_pts = pts;
-                ost = output_streams[i];
-            }
-        }
-
-        if (!ost)
-            break;
-
-        ret = poll_filter(ost);
-
-        if (ret == AVERROR_EOF) {
-            finish_output_stream(ost);
-            ret = 0;
-        } else if (ret == AVERROR(EAGAIN))
-            return 0;
-    }
-
-    return ret;
-}
-
  static void print_final_stats(int64_t total_size)
  {
      uint64_t video_size = 0, audio_size = 0, extra_size = 0, other_size = 0;
@@ -802,7 +756,7 @@ static void print_final_stats(int64_t total_size)
      }
  }

-static void print_report(int is_last_report, int64_t timer_start)
+static void print_report(int is_last_report)
  {
      char buf[1024];
      OutputStream *ost;
@@ -812,6 +766,7 @@ static void print_report(int is_last_report, int64_t 
timer_start)
      int frame_number, vid, i;
      double bitrate, ti1, pts;
      static int64_t last_time = -1;
+    static int64_t timer_start = -1;

Static variables are evil. I know there's already one there, but don't
add any new ones.


Alternatively I can forward them from the caller's caller, looked not exactly nice having

transcode() ->
pool_filters(&timer_start, &last_timer) ->
print_report(0, &timer_start, &last_timer)

lu

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to