mirror of https://git.ffmpeg.org/ffmpeg.git
Merge commit '3799376dd3373ee255651ed542c75b15665801a8'
* commit '3799376dd3373ee255651ed542c75b15665801a8': lavfi/fifo: fix flushing when using request_samples Conflicts: libavfilter/fifo.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
bb5ef96164
|
@ -147,10 +147,14 @@ static int return_audio_frame(AVFilterContext *ctx)
|
||||||
{
|
{
|
||||||
AVFilterLink *link = ctx->outputs[0];
|
AVFilterLink *link = ctx->outputs[0];
|
||||||
FifoContext *s = ctx->priv;
|
FifoContext *s = ctx->priv;
|
||||||
AVFrame *head = s->root.next->frame;
|
AVFrame *head = s->root.next ? s->root.next->frame : NULL;
|
||||||
AVFrame *out;
|
AVFrame *out;
|
||||||
int ret;
|
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 &&
|
if (!s->out &&
|
||||||
head->nb_samples >= link->request_samples &&
|
head->nb_samples >= link->request_samples &&
|
||||||
calc_ptr_alignment(head) >= 32) {
|
calc_ptr_alignment(head) >= 32) {
|
||||||
|
@ -227,8 +231,11 @@ static int request_frame(AVFilterLink *outlink)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!fifo->root.next) {
|
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;
|
return ret;
|
||||||
|
}
|
||||||
av_assert0(fifo->root.next);
|
av_assert0(fifo->root.next);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue