[libav-commits] af_amix: avoid spurious EAGAIN.

Anton Khirnov git at libav.org
Fri Jul 6 14:42:26 CEST 2012

Module: libav
Branch: master
Commit: b7558ac293f199ac408117618a61567ee1ee7077

Author:    Anton Khirnov <anton at khirnov.net>
Committer: Anton Khirnov <anton at khirnov.net>
Date:      Thu Jul  5 21:51:44 2012 +0200

af_amix: avoid spurious EAGAIN.

Input on/off state can change in request_samples(), which can result in
a state where only the first input is active. get_available_samples()
will then return 0, and request_frame() will fail with EAGAIN even
though there is data on the single active input.

Take this into account and check the number of active inputs again after
calling request_samples().


 libavfilter/af_amix.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c
index deeaa03..439231f 100644
--- a/libavfilter/af_amix.c
+++ b/libavfilter/af_amix.c
@@ -437,7 +437,9 @@ static int request_frame(AVFilterLink *outlink)
         ret = calc_active_inputs(s);
         if (ret < 0)
             return ret;
+    }
+    if (s->active_inputs > 1) {
         available_samples = get_available_samples(s);
         if (!available_samples)
             return AVERROR(EAGAIN);

More information about the libav-commits mailing list