[FFmpeg-cvslog] af_aresample: fix request_frame()
Michael Niedermayer
git at videolan.org
Sat May 26 13:06:44 CEST 2012
ffmpeg | branch: release/0.11 | Michael Niedermayer <michaelni at gmx.at> | Sat May 26 02:28:40 2012 +0200| [484302d183877bf0dbba616d5e3d3526be00653d] | committer: Michael Niedermayer
af_aresample: fix request_frame()
Fixes part of Ticket1341
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit 411689b5e1189e325f12060e52e7c5cb29f87b21)
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=484302d183877bf0dbba616d5e3d3526be00653d
---
libavfilter/af_aresample.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/libavfilter/af_aresample.c b/libavfilter/af_aresample.c
index 30d6f6a..aab118b 100644
--- a/libavfilter/af_aresample.c
+++ b/libavfilter/af_aresample.c
@@ -37,6 +37,7 @@ typedef struct {
double ratio;
struct SwrContext *swr;
int64_t next_pts;
+ int req_fullfilled;
} AResampleContext;
static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
@@ -208,6 +209,7 @@ static void filter_samples(AVFilterLink *inlink, AVFilterBufferRef *insamplesref
}
#endif
ff_filter_samples(outlink, outsamplesref);
+ aresample->req_fullfilled= 1;
avfilter_unref_buffer(insamplesref);
}
@@ -216,7 +218,12 @@ static int request_frame(AVFilterLink *outlink)
AVFilterContext *ctx = outlink->src;
AResampleContext *aresample = ctx->priv;
AVFilterLink *const inlink = outlink->src->inputs[0];
- int ret = avfilter_request_frame(ctx->inputs[0]);
+ int ret;
+
+ aresample->req_fullfilled = 0;
+ do{
+ ret = avfilter_request_frame(ctx->inputs[0]);
+ }while(!aresample->req_fullfilled && ret>=0);
if (ret == AVERROR_EOF) {
AVFilterBufferRef *outsamplesref;
More information about the ffmpeg-cvslog
mailing list