|
|
@ -180,10 +180,7 @@ static int request_frame(AVFilterLink *outlink) |
|
|
|
/* flush the lavr delay buffer */ |
|
|
|
/* flush the lavr delay buffer */ |
|
|
|
if (ret == AVERROR_EOF && s->avr) { |
|
|
|
if (ret == AVERROR_EOF && s->avr) { |
|
|
|
AVFrame *frame; |
|
|
|
AVFrame *frame; |
|
|
|
int nb_samples = av_rescale_rnd(avresample_get_delay(s->avr), |
|
|
|
int nb_samples = avresample_get_out_samples(s->avr, 0); |
|
|
|
outlink->sample_rate, |
|
|
|
|
|
|
|
ctx->inputs[0]->sample_rate, |
|
|
|
|
|
|
|
AV_ROUND_UP); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!nb_samples) |
|
|
|
if (!nb_samples) |
|
|
|
return ret; |
|
|
|
return ret; |
|
|
@ -219,9 +216,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) |
|
|
|
|
|
|
|
|
|
|
|
/* maximum possible samples lavr can output */ |
|
|
|
/* maximum possible samples lavr can output */ |
|
|
|
delay = avresample_get_delay(s->avr); |
|
|
|
delay = avresample_get_delay(s->avr); |
|
|
|
nb_samples = av_rescale_rnd(in->nb_samples + delay, |
|
|
|
nb_samples = avresample_get_out_samples(s->avr, in->nb_samples); |
|
|
|
outlink->sample_rate, inlink->sample_rate, |
|
|
|
|
|
|
|
AV_ROUND_UP); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
out = ff_get_audio_buffer(outlink, nb_samples); |
|
|
|
out = ff_get_audio_buffer(outlink, nb_samples); |
|
|
|
if (!out) { |
|
|
|
if (!out) { |
|
|
|