Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
On 23/04/18 08:22, Song, Ruiling wrote: >> -Original Message- >> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of >> Mark Thompson >> Sent: Sunday, April 22, 2018 3:21 AM >> To: ffmpeg-devel@ffmpeg.org >> Subject: Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based >> on framesync >> >> On 03/04/18 02:50, Ruiling Song wrote: >>> The existing version which was cherry-picked from Libav does not work >>> with FFmpeg framework, because ff_request_frame() was totally >>> different between Libav (recursive) and FFmpeg (non-recursive). >>> The existing overlay_qsv implementation depends on the recursive version >>> of ff_request_frame to trigger immediate call to request_frame() on input >>> pad. >>> But this has been removed in FFmpeg since "lavfi: make request_frame() non- >> recursive." >>> Now that we have handy framesync support in FFmpeg, so I make it work >>> based on framesync. Some other fixing which is also needed to make >>> overlay_qsv work are put in a separate patch. >>> >>> v2: >>> add .preinit field to initilize framesync options. >>> export more options like vf_overlay.c >>> >>> Signed-off-by: Ruiling Song <ruiling.s...@intel.com> >>> --- >>> libavfilter/Makefile | 2 +- >>> libavfilter/vf_overlay_qsv.c | 213 >>> --- >>> 2 files changed, 78 insertions(+), 137 deletions(-) >>> >> On 03/04/18 02:50, Ruiling Song wrote: >>> For filters based on framesync, the input frame was managed >>> by framesync, so we should not directly keep and destroy it, >>> instead we make a clone of it here, or else double-free will occur. >>> But for other filters not based on framesync, we still need to >>> free the input frame inside filter_frame. That's why I made >>> this v2 to fix the side-effect on normal filters. >>> >>> v2: >>> and one av_frame_free() in vf_vpp_qsv.c >>> >>> Signed-off-by: Ruiling Song <ruiling.s...@intel.com> >>> --- >>> libavfilter/qsvvpp.c | 4 ++-- >>> libavfilter/vf_vpp_qsv.c | 5 - >>> 2 files changed, 6 insertions(+), 3 deletions(-) >> >> Tested, LGTM, set applied with one minor merge fixup - it collided with the >> change to pass through unmodified frames directly. (Apologies for the >> delay!) >> >> Shall I apply this to the 4.0 branch as well? > > Sure, I think it's better to merge to 4.0. I noticed this feature was > included in the release note. Ok, I've cherry-picked it to the 4.0 branch as well. Thanks, - Mark ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
> -Original Message- > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf Of > Mark Thompson > Sent: Sunday, April 22, 2018 3:21 AM > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based > on framesync > > On 03/04/18 02:50, Ruiling Song wrote: > > The existing version which was cherry-picked from Libav does not work > > with FFmpeg framework, because ff_request_frame() was totally > > different between Libav (recursive) and FFmpeg (non-recursive). > > The existing overlay_qsv implementation depends on the recursive version > > of ff_request_frame to trigger immediate call to request_frame() on input > > pad. > > But this has been removed in FFmpeg since "lavfi: make request_frame() non- > recursive." > > Now that we have handy framesync support in FFmpeg, so I make it work > > based on framesync. Some other fixing which is also needed to make > > overlay_qsv work are put in a separate patch. > > > > v2: > > add .preinit field to initilize framesync options. > > export more options like vf_overlay.c > > > > Signed-off-by: Ruiling Song <ruiling.s...@intel.com> > > --- > > libavfilter/Makefile | 2 +- > > libavfilter/vf_overlay_qsv.c | 213 > > --- > > 2 files changed, 78 insertions(+), 137 deletions(-) > > > On 03/04/18 02:50, Ruiling Song wrote: > > For filters based on framesync, the input frame was managed > > by framesync, so we should not directly keep and destroy it, > > instead we make a clone of it here, or else double-free will occur. > > But for other filters not based on framesync, we still need to > > free the input frame inside filter_frame. That's why I made > > this v2 to fix the side-effect on normal filters. > > > > v2: > > and one av_frame_free() in vf_vpp_qsv.c > > > > Signed-off-by: Ruiling Song <ruiling.s...@intel.com> > > --- > > libavfilter/qsvvpp.c | 4 ++-- > > libavfilter/vf_vpp_qsv.c | 5 - > > 2 files changed, 6 insertions(+), 3 deletions(-) > > Tested, LGTM, set applied with one minor merge fixup - it collided with the > change to pass through unmodified frames directly. (Apologies for the delay!) > > Shall I apply this to the 4.0 branch as well? Sure, I think it's better to merge to 4.0. I noticed this feature was included in the release note. Thanks Mark! Ruiling > > Thanks, > > - Mark > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf > Of Mark Thompson > Sent: Sunday, April 22, 2018 3:21 AM > To: ffmpeg-devel@ffmpeg.org > Subject: Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work > based on framesync > > On 03/04/18 02:50, Ruiling Song wrote: > > The existing version which was cherry-picked from Libav does not work > > with FFmpeg framework, because ff_request_frame() was totally > > different between Libav (recursive) and FFmpeg (non-recursive). > > The existing overlay_qsv implementation depends on the recursive > > version of ff_request_frame to trigger immediate call to request_frame() > on input pad. > > But this has been removed in FFmpeg since "lavfi: make request_frame() > non-recursive." > > Now that we have handy framesync support in FFmpeg, so I make it work > > based on framesync. Some other fixing which is also needed to make > > overlay_qsv work are put in a separate patch. > > > > v2: > > add .preinit field to initilize framesync options. > > export more options like vf_overlay.c > > > > Signed-off-by: Ruiling Song <ruiling.s...@intel.com> > > --- > > libavfilter/Makefile | 2 +- > > libavfilter/vf_overlay_qsv.c | 213 > > --- > > 2 files changed, 78 insertions(+), 137 deletions(-) > > > On 03/04/18 02:50, Ruiling Song wrote: > > For filters based on framesync, the input frame was managed by > > framesync, so we should not directly keep and destroy it, instead we > > make a clone of it here, or else double-free will occur. > > But for other filters not based on framesync, we still need to free > > the input frame inside filter_frame. That's why I made this v2 to fix > > the side-effect on normal filters. > > > > v2: > > and one av_frame_free() in vf_vpp_qsv.c > > > > Signed-off-by: Ruiling Song <ruiling.s...@intel.com> > > --- > > libavfilter/qsvvpp.c | 4 ++-- > > libavfilter/vf_vpp_qsv.c | 5 - > > 2 files changed, 6 insertions(+), 3 deletions(-) > > Tested, LGTM, set applied with one minor merge fixup - it collided with the > change to pass through unmodified frames directly. (Apologies for the > delay!) > > Shall I apply this to the 4.0 branch as well? Yes, merging it to 4.0 branch is a good idea (qsv_overly is declared but not workable now). > > Thanks, > > - Mark ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
On 03/04/18 02:50, Ruiling Song wrote: > The existing version which was cherry-picked from Libav does not work > with FFmpeg framework, because ff_request_frame() was totally > different between Libav (recursive) and FFmpeg (non-recursive). > The existing overlay_qsv implementation depends on the recursive version > of ff_request_frame to trigger immediate call to request_frame() on input pad. > But this has been removed in FFmpeg since "lavfi: make request_frame() > non-recursive." > Now that we have handy framesync support in FFmpeg, so I make it work > based on framesync. Some other fixing which is also needed to make > overlay_qsv work are put in a separate patch. > > v2: > add .preinit field to initilize framesync options. > export more options like vf_overlay.c > > Signed-off-by: Ruiling Song> --- > libavfilter/Makefile | 2 +- > libavfilter/vf_overlay_qsv.c | 213 > --- > 2 files changed, 78 insertions(+), 137 deletions(-) > On 03/04/18 02:50, Ruiling Song wrote: > For filters based on framesync, the input frame was managed > by framesync, so we should not directly keep and destroy it, > instead we make a clone of it here, or else double-free will occur. > But for other filters not based on framesync, we still need to > free the input frame inside filter_frame. That's why I made > this v2 to fix the side-effect on normal filters. > > v2: > and one av_frame_free() in vf_vpp_qsv.c > > Signed-off-by: Ruiling Song > --- > libavfilter/qsvvpp.c | 4 ++-- > libavfilter/vf_vpp_qsv.c | 5 - > 2 files changed, 6 insertions(+), 3 deletions(-) Tested, LGTM, set applied with one minor merge fixup - it collided with the change to pass through unmodified frames directly. (Apologies for the delay!) Shall I apply this to the 4.0 branch as well? Thanks, - Mark ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
On 2018/4/3 9:50, Ruiling Song wrote: > The existing version which was cherry-picked from Libav does not work > with FFmpeg framework, because ff_request_frame() was totally > different between Libav (recursive) and FFmpeg (non-recursive). > The existing overlay_qsv implementation depends on the recursive version > of ff_request_frame to trigger immediate call to request_frame() on input pad. > But this has been removed in FFmpeg since "lavfi: make request_frame() > non-recursive." > Now that we have handy framesync support in FFmpeg, so I make it work > based on framesync. Some other fixing which is also needed to make > overlay_qsv work are put in a separate patch. > > v2: > add .preinit field to initilize framesync options. > export more options like vf_overlay.c > > Signed-off-by: Ruiling Song> --- > libavfilter/Makefile | 2 +- > libavfilter/vf_overlay_qsv.c | 213 > --- > 2 files changed, 78 insertions(+), 137 deletions(-) > > diff --git a/libavfilter/Makefile b/libavfilter/Makefile > index a90ca30..7f2ad1f 100644 > --- a/libavfilter/Makefile > +++ b/libavfilter/Makefile > @@ -267,7 +267,7 @@ OBJS-$(CONFIG_OSCILLOSCOPE_FILTER) += > vf_datascope.o > OBJS-$(CONFIG_OVERLAY_FILTER)+= vf_overlay.o framesync.o > OBJS-$(CONFIG_OVERLAY_OPENCL_FILTER) += vf_overlay_opencl.o opencl.o > \ > opencl/overlay.o framesync.o > -OBJS-$(CONFIG_OVERLAY_QSV_FILTER)+= vf_overlay_qsv.o > +OBJS-$(CONFIG_OVERLAY_QSV_FILTER)+= vf_overlay_qsv.o framesync.o > OBJS-$(CONFIG_OWDENOISE_FILTER) += vf_owdenoise.o > OBJS-$(CONFIG_PAD_FILTER)+= vf_pad.o > OBJS-$(CONFIG_PALETTEGEN_FILTER) += vf_palettegen.o > diff --git a/libavfilter/vf_overlay_qsv.c b/libavfilter/vf_overlay_qsv.c > index 6c3efdb..2087178 100644 > --- a/libavfilter/vf_overlay_qsv.c > +++ b/libavfilter/vf_overlay_qsv.c > @@ -36,6 +36,7 @@ > #include "formats.h" > #include "video.h" > > +#include "framesync.h" > #include "qsvvpp.h" > > #define MAIN0 > @@ -56,14 +57,10 @@ enum var_name { > VAR_VARS_NB > }; > > -enum EOFAction { > -EOF_ACTION_REPEAT, > -EOF_ACTION_ENDALL > -}; > - > typedef struct QSVOverlayContext { > const AVClass *class; > > +FFFrameSync fs; > QSVVPPContext *qsv; > QSVVPPParamqsv_param; > mfxExtVPPComposite comp_conf; > @@ -72,10 +69,6 @@ typedef struct QSVOverlayContext { > char *overlay_ox, *overlay_oy, *overlay_ow, *overlay_oh; > uint16_t overlay_alpha, overlay_pixel_alpha; > > -enum EOFAction eof_action; /* action to take on EOF from source */ > - > -AVFrame *main; > -AVFrame *over_prev, *over_next; > } QSVOverlayContext; > > static const char *const var_names[] = { > @@ -90,20 +83,25 @@ static const char *const var_names[] = { > NULL > }; > > -static const AVOption options[] = { > +static const AVOption overlay_qsv_options[] = { > { "x", "Overlay x position", OFFSET(overlay_ox), AV_OPT_TYPE_STRING, { > .str="0"}, 0, 255, .flags = FLAGS}, > { "y", "Overlay y position", OFFSET(overlay_oy), AV_OPT_TYPE_STRING, { > .str="0"}, 0, 255, .flags = FLAGS}, > { "w", "Overlay width", OFFSET(overlay_ow), AV_OPT_TYPE_STRING, { > .str="overlay_iw"}, 0, 255, .flags = FLAGS}, > { "h", "Overlay height", OFFSET(overlay_oh), AV_OPT_TYPE_STRING, { > .str="overlay_ih*w/overlay_iw"}, 0, 255, .flags = FLAGS}, > { "alpha", "Overlay global alpha", OFFSET(overlay_alpha), > AV_OPT_TYPE_INT, { .i64 = 255}, 0, 255, .flags = FLAGS}, > { "eof_action", "Action to take when encountering EOF from secondary > input ", > -OFFSET(eof_action), AV_OPT_TYPE_INT, { .i64 = EOF_ACTION_REPEAT }, > -EOF_ACTION_REPEAT, EOF_ACTION_ENDALL, .flags = FLAGS, "eof_action" }, > -{ "repeat", "Repeat the previous frame.", 0, AV_OPT_TYPE_CONST, { > .i64 = EOF_ACTION_REPEAT }, .flags = FLAGS, "eof_action" }, > -{ "endall", "End both streams.", 0, AV_OPT_TYPE_CONST, { > .i64 = EOF_ACTION_ENDALL }, .flags = FLAGS, "eof_action" }, > +OFFSET(fs.opt_eof_action), AV_OPT_TYPE_INT, { .i64 = > EOF_ACTION_REPEAT }, > +EOF_ACTION_REPEAT, EOF_ACTION_PASS, .flags = FLAGS, "eof_action" }, > +{ "repeat", "Repeat the previous frame.", 0, AV_OPT_TYPE_CONST, { > .i64 = EOF_ACTION_REPEAT }, .flags = FLAGS, "eof_action" }, > +{ "endall", "End both streams.",0, AV_OPT_TYPE_CONST, { > .i64 = EOF_ACTION_ENDALL }, .flags = FLAGS, "eof_action" }, > +{ "pass", "Pass through the main input.", 0, AV_OPT_TYPE_CONST, { > .i64 = EOF_ACTION_PASS }, .flags = FLAGS, "eof_action" }, > +{ "shortest", "force termination when the shortest input terminates", > OFFSET(fs.opt_shortest), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, FLAGS }, > +{
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
> -Original Message- > From: Li, Zhong > Sent: Tuesday, April 10, 2018 11:39 AM > To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> > Cc: Song, Ruiling <ruiling.s...@intel.com> > Subject: RE: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based > on framesync > > > From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf > > Of Ruiling Song > > Sent: Tuesday, April 3, 2018 9:50 AM > > To: ffmpeg-devel@ffmpeg.org > > Cc: Song, Ruiling <ruiling.s...@intel.com> > > Subject: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based > > on framesync > > > > The existing version which was cherry-picked from Libav does not work with > > FFmpeg framework, because ff_request_frame() was totally different > > between Libav (recursive) and FFmpeg (non-recursive). > > The existing overlay_qsv implementation depends on the recursive version of > > ff_request_frame to trigger immediate call to request_frame() on input pad. > > But this has been removed in FFmpeg since "lavfi: make request_frame() > > non-recursive." > > Now that we have handy framesync support in FFmpeg, so I make it work > > based on framesync. Some other fixing which is also needed to make > > overlay_qsv work are put in a separate patch. > > > > v2: > > add .preinit field to initilize framesync options. > > export more options like vf_overlay.c > > How about taking these options as a separated patch? > It doesn't take obvious effect to make qsv overlay work. Below are the options which I mainly mean here. Given that this is a new implementation, I thought this minor change does not bring too much extra burden to the patch. It just gives users more freedom to control the behavior of this filter. But I am open to follow your comment if we think this is necessary to merge the patch. I would like to wait if anybody else will give some comment on the overall patch. Thanks for your review! > > +{ "shortest", "force termination when the shortest input terminates", > > OFFSET(fs.opt_shortest), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, FLAGS }, > > +{ "repeatlast", "repeat overlay of the last overlay frame", > > + OFFSET(fs.opt_repeatlast), AV_OPT_TYPE_BOOL, {.i64=1}, 0, 1, FLAGS }, > > { NULL } > > > > -static const AVClass overlay_qsv_class = { > > -.class_name = "overlay_qsv", > > -.item_name = av_default_item_name, > > -.option = options, > > -.version= LIBAVUTIL_VERSION_INT, > > -}; > > Why remove it but keep ".priv_class"? You can take a look at FRAMESYNC_DEFINE_CLASS macro definition. It already include this overlay_qsv_class definition. > The reset LGTM. > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
> From: ffmpeg-devel [mailto:ffmpeg-devel-boun...@ffmpeg.org] On Behalf > Of Ruiling Song > Sent: Tuesday, April 3, 2018 9:50 AM > To: ffmpeg-devel@ffmpeg.org > Cc: Song, Ruiling> Subject: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based > on framesync > > The existing version which was cherry-picked from Libav does not work with > FFmpeg framework, because ff_request_frame() was totally different > between Libav (recursive) and FFmpeg (non-recursive). > The existing overlay_qsv implementation depends on the recursive version of > ff_request_frame to trigger immediate call to request_frame() on input pad. > But this has been removed in FFmpeg since "lavfi: make request_frame() > non-recursive." > Now that we have handy framesync support in FFmpeg, so I make it work > based on framesync. Some other fixing which is also needed to make > overlay_qsv work are put in a separate patch. > > v2: > add .preinit field to initilize framesync options. > export more options like vf_overlay.c How about taking these options as a separated patch? It doesn't take obvious effect to make qsv overlay work. > > Signed-off-by: Ruiling Song > --- > libavfilter/Makefile | 2 +- > libavfilter/vf_overlay_qsv.c | 213 > --- > 2 files changed, 78 insertions(+), 137 deletions(-) > > diff --git a/libavfilter/Makefile b/libavfilter/Makefile index > a90ca30..7f2ad1f > 100644 > --- a/libavfilter/Makefile > +++ b/libavfilter/Makefile > @@ -267,7 +267,7 @@ OBJS-$(CONFIG_OSCILLOSCOPE_FILTER) > += vf_datascope.o > OBJS-$(CONFIG_OVERLAY_FILTER)+= vf_overlay.o > framesync.o > OBJS-$(CONFIG_OVERLAY_OPENCL_FILTER) += > vf_overlay_opencl.o opencl.o \ > > opencl/overlay.o framesync.o > -OBJS-$(CONFIG_OVERLAY_QSV_FILTER)+= vf_overlay_qsv.o > +OBJS-$(CONFIG_OVERLAY_QSV_FILTER)+= vf_overlay_qsv.o > framesync.o > OBJS-$(CONFIG_OWDENOISE_FILTER) += vf_owdenoise.o > OBJS-$(CONFIG_PAD_FILTER)+= vf_pad.o > OBJS-$(CONFIG_PALETTEGEN_FILTER) += vf_palettegen.o > diff --git a/libavfilter/vf_overlay_qsv.c b/libavfilter/vf_overlay_qsv.c index > 6c3efdb..2087178 100644 > --- a/libavfilter/vf_overlay_qsv.c > +++ b/libavfilter/vf_overlay_qsv.c > @@ -36,6 +36,7 @@ > #include "formats.h" > #include "video.h" > > +#include "framesync.h" > #include "qsvvpp.h" > > #define MAIN0 > @@ -56,14 +57,10 @@ enum var_name { > VAR_VARS_NB > }; > > -enum EOFAction { > -EOF_ACTION_REPEAT, > -EOF_ACTION_ENDALL > -}; > - > typedef struct QSVOverlayContext { > const AVClass *class; > > +FFFrameSync fs; > QSVVPPContext *qsv; > QSVVPPParamqsv_param; > mfxExtVPPComposite comp_conf; > @@ -72,10 +69,6 @@ typedef struct QSVOverlayContext { > char *overlay_ox, *overlay_oy, *overlay_ow, *overlay_oh; > uint16_t overlay_alpha, overlay_pixel_alpha; > > -enum EOFAction eof_action; /* action to take on EOF from source */ > - > -AVFrame *main; > -AVFrame *over_prev, *over_next; > } QSVOverlayContext; > > static const char *const var_names[] = { @@ -90,20 +83,25 @@ static > const char *const var_names[] = { > NULL > }; > > -static const AVOption options[] = { > +static const AVOption overlay_qsv_options[] = { > { "x", "Overlay x position", OFFSET(overlay_ox), AV_OPT_TYPE_STRING, > { .str="0"}, 0, 255, .flags = FLAGS}, > { "y", "Overlay y position", OFFSET(overlay_oy), AV_OPT_TYPE_STRING, > { .str="0"}, 0, 255, .flags = FLAGS}, > { "w", "Overlay width", OFFSET(overlay_ow), > AV_OPT_TYPE_STRING, { .str="overlay_iw"}, 0, 255, .flags = FLAGS}, > { "h", "Overlay height", OFFSET(overlay_oh), > AV_OPT_TYPE_STRING, { .str="overlay_ih*w/overlay_iw"}, 0, 255, .flags = > FLAGS}, > { "alpha", "Overlay global alpha", OFFSET(overlay_alpha), > AV_OPT_TYPE_INT, { .i64 = 255}, 0, 255, .flags = FLAGS}, > { "eof_action", "Action to take when encountering EOF from > secondary input ", > -OFFSET(eof_action), AV_OPT_TYPE_INT, { .i64 = > EOF_ACTION_REPEAT }, > -EOF_ACTION_REPEAT, EOF_ACTION_ENDALL, .flags = FLAGS, > "eof_action" }, > -{ "repeat", "Repeat the previous frame.", 0, AV_OPT_TYPE_CONST, > { .i64 = EOF_ACTION_REPEAT }, .flags = FLAGS, "eof_action" }, > -{ "endall", "End both streams.", 0, > AV_OPT_TYPE_CONST, { .i64 = EOF_ACTION_ENDALL }, .flags = FLAGS, > "eof_action" }, > +OFFSET(fs.opt_eof_action), AV_OPT_TYPE_INT, { .i64 = > EOF_ACTION_REPEAT }, > +EOF_ACTION_REPEAT, EOF_ACTION_PASS, .flags = FLAGS, > "eof_action" }, > +{ "repeat", "Repeat the previous frame.", 0, > AV_OPT_TYPE_CONST, { .i64 = EOF_ACTION_REPEAT }, .flags = FLAGS, > "eof_action" }, > +{ "endall", "End both streams.",0, > AV_OPT_TYPE_CONST, { .i64 = EOF_ACTION_ENDALL }, .flags = FLAGS, >
Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync
> -Original Message- > From: Song, Ruiling > Sent: Tuesday, April 3, 2018 9:50 AM > To: ffmpeg-devel@ffmpeg.org > Cc: Song, Ruiling> Subject: [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync > > The existing version which was cherry-picked from Libav does not work > with FFmpeg framework, because ff_request_frame() was totally > different between Libav (recursive) and FFmpeg (non-recursive). > The existing overlay_qsv implementation depends on the recursive version > of ff_request_frame to trigger immediate call to request_frame() on input pad. > But this has been removed in FFmpeg since "lavfi: make request_frame() non- > recursive." > Now that we have handy framesync support in FFmpeg, so I make it work > based on framesync. Some other fixing which is also needed to make > overlay_qsv work are put in a separate patch. > > v2: > add .preinit field to initilize framesync options. > export more options like vf_overlay.c > > Signed-off-by: Ruiling Song > --- > libavfilter/Makefile | 2 +- > libavfilter/vf_overlay_qsv.c | 213 > --- > 2 files changed, 78 insertions(+), 137 deletions(-) Ping? ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel