1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-21 10:55:51 +02:00

lavfi/fifo: fix flushing when using request_samples

If any samples are still buffered when request_frame returns EOF, they
won't be returned currently.
This commit is contained in:
Anton Khirnov 2013-08-04 12:10:23 +02:00
parent 06cd4c5a68
commit 3799376dd3

View File

@ -147,10 +147,14 @@ static int return_audio_frame(AVFilterContext *ctx)
{
AVFilterLink *link = ctx->outputs[0];
FifoContext *s = ctx->priv;
AVFrame *head = s->root.next->frame;
AVFrame *head = s->root.next ? s->root.next->frame : NULL;
AVFrame *out;
int ret;
/* if head is NULL then we're flushing the remaining samples in out */
if (!head && !s->out)
return AVERROR_EOF;
if (!s->out &&
head->nb_samples >= link->request_samples &&
calc_ptr_alignment(head) >= 32) {
@ -227,8 +231,11 @@ static int request_frame(AVFilterLink *outlink)
int ret = 0;
if (!fifo->root.next) {
if ((ret = ff_request_frame(outlink->src->inputs[0])) < 0)
if ((ret = ff_request_frame(outlink->src->inputs[0])) < 0) {
if (ret == AVERROR_EOF && outlink->request_samples)
return return_audio_frame(outlink->src);
return ret;
}
}
if (outlink->request_samples) {