mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-12 01:40:04 +01:00
lavfi/af_atempo: simplify request_frame loop.
This commit is contained in:
@@ -139,7 +139,6 @@ typedef struct {
|
|||||||
FFTSample *correlation;
|
FFTSample *correlation;
|
||||||
|
|
||||||
// for managing AVFilterPad.request_frame and AVFilterPad.filter_frame
|
// for managing AVFilterPad.request_frame and AVFilterPad.filter_frame
|
||||||
int request_fulfilled;
|
|
||||||
AVFrame *dst_buffer;
|
AVFrame *dst_buffer;
|
||||||
uint8_t *dst;
|
uint8_t *dst;
|
||||||
uint8_t *dst_end;
|
uint8_t *dst_end;
|
||||||
@@ -181,7 +180,6 @@ static void yae_clear(ATempoContext *atempo)
|
|||||||
atempo->dst = NULL;
|
atempo->dst = NULL;
|
||||||
atempo->dst_end = NULL;
|
atempo->dst_end = NULL;
|
||||||
|
|
||||||
atempo->request_fulfilled = 0;
|
|
||||||
atempo->nsamples_in = 0;
|
atempo->nsamples_in = 0;
|
||||||
atempo->nsamples_out = 0;
|
atempo->nsamples_out = 0;
|
||||||
}
|
}
|
||||||
@@ -1017,6 +1015,8 @@ static int config_props(AVFilterLink *inlink)
|
|||||||
int sample_rate = (int)inlink->sample_rate;
|
int sample_rate = (int)inlink->sample_rate;
|
||||||
int channels = av_get_channel_layout_nb_channels(inlink->channel_layout);
|
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);
|
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);
|
ret = push_samples(atempo, outlink, n_out);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto end;
|
goto end;
|
||||||
atempo->request_fulfilled = 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1090,11 +1089,7 @@ static int request_frame(AVFilterLink *outlink)
|
|||||||
ATempoContext *atempo = ctx->priv;
|
ATempoContext *atempo = ctx->priv;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
atempo->request_fulfilled = 0;
|
|
||||||
do {
|
|
||||||
ret = ff_request_frame(ctx->inputs[0]);
|
ret = ff_request_frame(ctx->inputs[0]);
|
||||||
}
|
|
||||||
while (!atempo->request_fulfilled && ret >= 0);
|
|
||||||
|
|
||||||
if (ret == AVERROR_EOF) {
|
if (ret == AVERROR_EOF) {
|
||||||
// flush the filter:
|
// flush the filter:
|
||||||
|
|||||||
Reference in New Issue
Block a user