On 07/05/2012 03:57 PM, Anton Khirnov wrote:
> 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 file changed, 2 insertions(+)
> 
> 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);

yeah, LGTM.

-Justin

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to