Revert "Revert "lavfi/buffersrc: push the frame deeper if requested.""

This reverts commit 04aa09c4bc
and reintroduces 0ff5567a30 that
was temporarily reverted due to minor regressions.

It also reverts e5bce8b4ce that fixed FATE refs.
The fate-ffm change is caused by field_order now being set
on the output format because the first frame arrives earlier.
The fate-mxf change is assumed to be the same.
This commit is contained in:
Nicolas George 2017-07-16 17:03:50 +02:00
parent 70eb77b34e
commit 1daacba91f
3 changed files with 29 additions and 4 deletions

View File

@ -173,6 +173,20 @@ int attribute_align_arg av_buffersrc_add_frame_flags(AVFilterContext *ctx, AVFra
return ret;
}
static int push_frame(AVFilterGraph *graph)
{
int ret;
while (1) {
ret = ff_filter_graph_run_once(graph);
if (ret == AVERROR(EAGAIN))
break;
if (ret < 0)
return ret;
}
return 0;
}
static int av_buffersrc_add_frame_internal(AVFilterContext *ctx,
AVFrame *frame, int flags)
{
@ -185,6 +199,11 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx,
if (!frame) {
s->eof = 1;
ff_avfilter_link_set_in_status(ctx->outputs[0], AVERROR_EOF, AV_NOPTS_VALUE);
if ((flags & AV_BUFFERSRC_FLAG_PUSH)) {
ret = push_frame(ctx->graph);
if (ret < 0)
return ret;
}
return 0;
} else if (s->eof)
return AVERROR(EINVAL);
@ -239,6 +258,12 @@ static int av_buffersrc_add_frame_internal(AVFilterContext *ctx,
if ((ret = ctx->output_pads[0].request_frame(ctx->outputs[0])) < 0)
return ret;
if ((flags & AV_BUFFERSRC_FLAG_PUSH)) {
ret = push_frame(ctx->graph);
if (ret < 0)
return ret;
}
return 0;
}

View File

@ -1,3 +1,3 @@
a0e9616f0d9a8c1029f3220b1b9175f4 *./tests/data/lavf/lavf.ffm
ca2a450cd0d1e299514a345923b4c82a *./tests/data/lavf/lavf.ffm
376832 ./tests/data/lavf/lavf.ffm
./tests/data/lavf/lavf.ffm CRC=0x000e23ae

View File

@ -1,9 +1,9 @@
dbdbb7d8677dc29b0d90eedcf418ce13 *./tests/data/lavf/lavf.mxf
eaac3125ac1a61fe5f968c7af83fa71e *./tests/data/lavf/lavf.mxf
525369 ./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0x8dddfaab
40fcb0a898f8825a17f5754b23762f49 *./tests/data/lavf/lavf.mxf
1562530330b13e9e70f522fe20265632 *./tests/data/lavf/lavf.mxf
560697 ./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0xf21b1b48
9233d192af20fc2a89304f5ae93c21ee *./tests/data/lavf/lavf.mxf
e07858715997313ae66a1cdd6fde5f66 *./tests/data/lavf/lavf.mxf
525369 ./tests/data/lavf/lavf.mxf
./tests/data/lavf/lavf.mxf CRC=0x8dddfaab