Andreas Rheinhardt (12020-09-08): > Not providing any samples makes no sense at all. And if no samples > were provided for one of the HRIR streams, one would either run into > an av_assert1 in ff_inlink_consume_samples() or into a segfault in > take_samples() in avfilter.c. > > Signed-off-by: Andreas Rheinhardt <[email protected]> > --- > libavfilter/af_headphone.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/libavfilter/af_headphone.c b/libavfilter/af_headphone.c > index 1024ff57b1..f488e0e28d 100644 > --- a/libavfilter/af_headphone.c > +++ b/libavfilter/af_headphone.c > @@ -631,8 +631,14 @@ static int activate(AVFilterContext *ctx) > if ((ret = check_ir(ctx->inputs[i], i)) < 0) > return ret; > > - if (ff_outlink_get_status(ctx->inputs[i]) == AVERROR_EOF) > + if (ff_outlink_get_status(ctx->inputs[i]) == AVERROR_EOF) { > + if (!ff_inlink_queued_samples(ctx->inputs[i])) { > + av_log(ctx, AV_LOG_ERROR, "No samples provided for " > + "HRIR stream %d.\n", i - 1); > + return AVERROR_INVALIDDATA; > + } > s->in[i].eof = 1; > + }
No, this is bogus. A filter should not call ff_outlink_get_status() on
its input, that is breaking the abstraction provided by the API. In
fact, everything in `git grep 'ff_outlink_get_status.*input'` is a bug.
> }
>
> for (i = 1; i < s->nb_inputs; i++) {
Regards,
--
Nicolas George
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
