Signed-off-by: Marton Balint <c...@passwd.hu> --- libavfilter/af_atempo.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/libavfilter/af_atempo.c b/libavfilter/af_atempo.c index 59b08ec..93a9c05 100644 --- a/libavfilter/af_atempo.c +++ b/libavfilter/af_atempo.c @@ -74,6 +74,7 @@ typedef struct { * Filter state machine states */ typedef enum { + YAE_NEW, YAE_LOAD_FRAGMENT, YAE_ADJUST_POSITION, YAE_RELOAD_FRAGMENT, @@ -180,7 +181,7 @@ static void yae_clear(ATempoContext *atempo) atempo->tail = 0; atempo->nfrag = 0; - atempo->state = YAE_LOAD_FRAGMENT; + atempo->state = YAE_NEW; atempo->position[0] = 0; atempo->position[1] = 0; @@ -828,6 +829,9 @@ yae_apply(ATempoContext *atempo, uint8_t *dst_end) { while (1) { + if (atempo->state == YAE_NEW) + atempo->state = YAE_LOAD_FRAGMENT; + if (atempo->state == YAE_LOAD_FRAGMENT) { // load additional data for the current fragment: if (yae_load_frag(atempo, src_ref, src_end) != 0) { @@ -983,7 +987,7 @@ static av_cold int init(AVFilterContext *ctx) { ATempoContext *atempo = ctx->priv; atempo->format = AV_SAMPLE_FMT_NONE; - atempo->state = YAE_LOAD_FRAGMENT; + atempo->state = YAE_NEW; return 0; } @@ -1123,7 +1127,7 @@ static int request_frame(AVFilterLink *outlink) ret = ff_request_frame(ctx->inputs[0]); - if (ret == AVERROR_EOF) { + if (ret == AVERROR_EOF && atempo->state != YAE_NEW) { // flush the filter: int n_max = atempo->ring; int n_out; -- 2.10.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel