diff options
Diffstat (limited to 'libavfilter/af_amix.c')
-rw-r--r-- | libavfilter/af_amix.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/libavfilter/af_amix.c b/libavfilter/af_amix.c index e70c6b6f08..6dad3db0d0 100644 --- a/libavfilter/af_amix.c +++ b/libavfilter/af_amix.c @@ -354,7 +354,7 @@ static int request_samples(AVFilterContext *ctx, int min_samples) s->input_state[i] = INPUT_OFF; continue; } - } else if (ret) + } else if (ret < 0) return ret; } return 0; @@ -403,7 +403,7 @@ static int request_frame(AVFilterLink *outlink) available_samples = get_available_samples(s); if (!available_samples) - return 0; + return AVERROR(EAGAIN); return output_frame(outlink, available_samples); } @@ -416,7 +416,7 @@ static int request_frame(AVFilterLink *outlink) return AVERROR_EOF; else return AVERROR(EAGAIN); - } else if (ret) + } else if (ret < 0) return ret; } av_assert0(s->frame_list->nb_frames > 0); @@ -431,10 +431,12 @@ 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 0; + return AVERROR(EAGAIN); available_samples = FFMIN(available_samples, wanted_samples); } else { available_samples = wanted_samples; |