Re: [FFmpeg-devel] [PATCH v2 1/2] lavf: make overlay_qsv work based on framesync

2018-04-23 Thread Mark Thompson
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

2018-04-23 Thread Song, Ruiling


> -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

2018-04-22 Thread Li, Zhong
> 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

2018-04-21 Thread Mark Thompson
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

2018-04-11 Thread Jun Zhao


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

2018-04-11 Thread Song, Ruiling


> -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

2018-04-09 Thread Li, Zhong
> 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

2018-04-08 Thread Song, Ruiling

> -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