[FFmpeg-cvslog] lavfi/af_atempo: simplify request_frame loop.

Nicolas George git at videolan.org
Wed Apr 3 18:36:34 CEST 2013


ffmpeg | branch: master | Nicolas George <nicolas.george at normalesup.org> | Sun Mar 31 19:36:38 2013 +0200| [d38c173dfb4bbee19ec341202c6c79bb0aa2cdad] | committer: Nicolas George

lavfi/af_atempo: simplify request_frame loop.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d38c173dfb4bbee19ec341202c6c79bb0aa2cdad
---

 libavfilter/af_atempo.c |   11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c
index 9547969..af49b0b 100644
--- a/libavfilter/af_atempo.c
+++ b/libavfilter/af_atempo.c
@@ -139,7 +139,6 @@ typedef struct {
     FFTSample *correlation;
 
     // for managing AVFilterPad.request_frame and AVFilterPad.filter_frame
-    int request_fulfilled;
     AVFrame *dst_buffer;
     uint8_t *dst;
     uint8_t *dst_end;
@@ -181,7 +180,6 @@ static void yae_clear(ATempoContext *atempo)
     atempo->dst     = NULL;
     atempo->dst_end = NULL;
 
-    atempo->request_fulfilled = 0;
     atempo->nsamples_in       = 0;
     atempo->nsamples_out      = 0;
 }
@@ -1017,6 +1015,8 @@ static int config_props(AVFilterLink *inlink)
     int sample_rate = (int)inlink->sample_rate;
     int channels = av_get_channel_layout_nb_channels(inlink->channel_layout);
 
+    ctx->outputs[0]->flags |= FF_LINK_FLAG_REQUEST_LOOP;
+
     return yae_reset(atempo, format, sample_rate, channels);
 }
 
@@ -1074,7 +1074,6 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *src_buffer)
             ret = push_samples(atempo, outlink, n_out);
             if (ret < 0)
                 goto end;
-            atempo->request_fulfilled = 1;
         }
     }
 
@@ -1090,11 +1089,7 @@ static int request_frame(AVFilterLink *outlink)
     ATempoContext *atempo = ctx->priv;
     int ret;
 
-    atempo->request_fulfilled = 0;
-    do {
-        ret = ff_request_frame(ctx->inputs[0]);
-    }
-    while (!atempo->request_fulfilled && ret >= 0);
+    ret = ff_request_frame(ctx->inputs[0]);
 
     if (ret == AVERROR_EOF) {
         // flush the filter:



More information about the ffmpeg-cvslog mailing list