summaryrefslogtreecommitdiff
path: root/libavfilter/af_amix.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavfilter/af_amix.c')
-rw-r--r--libavfilter/af_amix.c10
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;