From dda59d9adcfa8976c0bc68061a15fbe08dfaac6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= Date: Wed, 13 Mar 2013 09:55:32 +0100 Subject: lavfi/asetnsamples: raise filter_frame() error. --- libavfilter/af_asetnsamples.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'libavfilter') diff --git a/libavfilter/af_asetnsamples.c b/libavfilter/af_asetnsamples.c index f995ce9..08e5279 100644 --- a/libavfilter/af_asetnsamples.c +++ b/libavfilter/af_asetnsamples.c @@ -94,7 +94,7 @@ static int push_samples(AVFilterLink *outlink) { ASNSContext *asns = outlink->src->priv; AVFrame *outsamples = NULL; - int nb_out_samples, nb_pad_samples; + int ret, nb_out_samples, nb_pad_samples; if (asns->pad) { nb_out_samples = av_audio_fifo_size(asns->fifo) ? asns->nb_out_samples : 0; @@ -125,7 +125,9 @@ static int push_samples(AVFilterLink *outlink) if (asns->next_out_pts != AV_NOPTS_VALUE) asns->next_out_pts += nb_out_samples; - ff_filter_frame(outlink, outsamples); + ret = ff_filter_frame(outlink, outsamples); + if (ret < 0) + return ret; asns->req_fullfilled = 1; return nb_out_samples; } @@ -168,9 +170,11 @@ static int request_frame(AVFilterLink *outlink) ret = ff_request_frame(inlink); } while (!asns->req_fullfilled && ret >= 0); - if (ret == AVERROR_EOF) - while (push_samples(outlink)) - ; + if (ret == AVERROR_EOF) { + do { + ret = push_samples(outlink); + } while (ret > 0); + } return ret; } -- cgit v1.1