On 7/17/2017 11:19 AM, Nicolas George wrote: > This reverts commit 04aa09c4bcf2d5a634a35da3a3ae3fc1abe30ef8.
You could mention this is also reverting e5bce8b4ce7b1f3a83998febdfa86a3771df96ce. > > 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. > > Signed-off-by: Nicolas George <geo...@nsup.org> > --- > libavfilter/buffersrc.c | 25 +++++++++++++++++++++++++ > tests/ref/lavf/ffm | 2 +- > tests/ref/lavf/mxf | 6 +++--- > 3 files changed, 29 insertions(+), 4 deletions(-) > > > The field_order info seems to not be printed by any tool, and I do not know > the MXF format to check directly in the file; with FFM it was easy to see in > a hexdump. Anyway, the fact that field order was not set before de-reverting > hints at something fishy happening in the initialization code of ffmpeg. I > do not have time nor motivation to investigate that, so I will assume the > change is for the best like FFM. > > If someone wants to investigate, the change can be toggled by simply adding > "return 0" at the beginning of push_frame(), below. > > > diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c > index 587b29b91a..e8f59c2de7 100644 > --- a/libavfilter/buffersrc.c > +++ b/libavfilter/buffersrc.c > @@ -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; > } > > diff --git a/tests/ref/lavf/ffm b/tests/ref/lavf/ffm > index 54c56034aa..d9fa8d52cb 100644 > --- a/tests/ref/lavf/ffm > +++ b/tests/ref/lavf/ffm > @@ -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 > diff --git a/tests/ref/lavf/mxf b/tests/ref/lavf/mxf > index 9ab4432c63..48fe95a235 100644 > --- a/tests/ref/lavf/mxf > +++ b/tests/ref/lavf/mxf > @@ -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 > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel