aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2023-05-30 00:43:08 +0200
committerPaul B Mahol <onemda@gmail.com>2023-05-30 02:16:44 +0200
commitac6a6d1abf4e7d7f4b36eceaa47a37eb933bd38f (patch)
tree516f3a7dc8308c5132ab518a2ef969424adc88c1
parent51a1124a684ae8b9c9f56a2b958ae09847964525 (diff)
downloadffmpeg-ac6a6d1abf4e7d7f4b36eceaa47a37eb933bd38f.tar.gz
avfilter/af_join: do not use ff_outlink_get_status() on inlink
-rw-r--r--libavfilter/af_join.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/libavfilter/af_join.c b/libavfilter/af_join.c
index af924b7ec1..5dbf9d8d22 100644
--- a/libavfilter/af_join.c
+++ b/libavfilter/af_join.c
@@ -52,6 +52,7 @@ typedef struct JoinContext {
AVChannelLayout ch_layout;
int64_t eof_pts;
+ int eof;
ChannelMap *channels;
@@ -556,10 +557,11 @@ fail:
return ret;
eof:
for (i = 0; i < ctx->nb_inputs; i++) {
- if (ff_outlink_get_status(ctx->inputs[i]) &&
+ if (s->eof &&
ff_inlink_queued_samples(ctx->inputs[i]) <= 0 &&
!s->input_frames[i]) {
ff_outlink_set_status(outlink, AVERROR_EOF, s->eof_pts);
+ break;
}
}
@@ -580,11 +582,10 @@ static int activate(AVFilterContext *ctx)
if (ret < 0) {
return ret;
} else if (ret == 0 && ff_inlink_acknowledge_status(ctx->inputs[0], &status, &pts)) {
- ff_outlink_set_status(ctx->outputs[0], status, s->eof_pts);
- return 0;
+ s->eof |= status == AVERROR_EOF;
}
- if (!s->input_frames[0] && ff_outlink_frame_wanted(ctx->outputs[0])) {
+ if (!s->eof && !s->input_frames[0] && ff_outlink_frame_wanted(ctx->outputs[0])) {
ff_inlink_request_frame(ctx->inputs[0]);
return 0;
}
@@ -600,11 +601,10 @@ static int activate(AVFilterContext *ctx)
if (ret < 0) {
return ret;
} else if (ff_inlink_acknowledge_status(ctx->inputs[i], &status, &pts)) {
- ff_outlink_set_status(ctx->outputs[0], status, pts);
- return 0;
+ s->eof |= status == AVERROR_EOF;
}
- if (!s->input_frames[i]) {
+ if (!s->eof && !s->input_frames[i]) {
ff_inlink_request_frame(ctx->inputs[i]);
return 0;
}