Re: [FFmpeg-devel] [PATCH] lavf/qsv_scale: fix green stripe at the bottom

2020-12-01 Thread Xiang, Haihao
On Tue, 2020-12-01 at 22:40 +, Artem Galin wrote:
> Explicitly set region of interest for input surfaces.
> 
> Signed-off-by: Artem Galin 
> ---
>  libavfilter/vf_scale_qsv.c | 9 ++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
> index 5064dcbb60..321adbbb18 100644
> --- a/libavfilter/vf_scale_qsv.c
> +++ b/libavfilter/vf_scale_qsv.c
> @@ -274,7 +274,7 @@ static const mfxHandleType handle_types[] = {
>  MFX_HANDLE_D3D11_DEVICE,
>  };
>  
> -static int init_out_session(AVFilterContext *ctx)
> +static int init_out_session(AVFilterContext *ctx, int in_width, int
> in_height)
>  {
>  
>  QSVScaleContext   *s = ctx->priv;
> @@ -385,8 +385,11 @@ static int init_out_session(AVFilterContext *ctx)
>   sizeof(*s->mem_ids_in));
>  if (!s->mem_ids_in)
>  return AVERROR(ENOMEM);
> -for (i = 0; i < in_frames_hwctx->nb_surfaces; i++)
> +for (i = 0; i < in_frames_hwctx->nb_surfaces; i++) {
>  s->mem_ids_in[i] = in_frames_hwctx->surfaces[i].Data.MemId;
> +in_frames_hwctx->surfaces[i].Info.CropW = in_width;
> +in_frames_hwctx->surfaces[i].Info.CropH = in_height;
> +}
>  s->nb_mem_ids_in = in_frames_hwctx->nb_surfaces;
>  
>  s->mem_ids_out = av_mallocz_array(out_frames_hwctx->nb_surfaces,
> @@ -450,7 +453,7 @@ static int init_scale_session(AVFilterContext *ctx, int
> in_width, int in_height,
>  if (ret < 0)
>  return ret;
>  
> -ret = init_out_session(ctx);
> +ret = init_out_session(ctx, in_width, in_height);
>  if (ret < 0)
>  return ret;

LGTM, thanks!

>  
___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

[FFmpeg-devel] [PATCH] lavf/qsv_scale: fix green stripe at the bottom

2020-12-01 Thread Artem Galin
Explicitly set region of interest for input surfaces.

Signed-off-by: Artem Galin 
---
 libavfilter/vf_scale_qsv.c | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/libavfilter/vf_scale_qsv.c b/libavfilter/vf_scale_qsv.c
index 5064dcbb60..321adbbb18 100644
--- a/libavfilter/vf_scale_qsv.c
+++ b/libavfilter/vf_scale_qsv.c
@@ -274,7 +274,7 @@ static const mfxHandleType handle_types[] = {
 MFX_HANDLE_D3D11_DEVICE,
 };
 
-static int init_out_session(AVFilterContext *ctx)
+static int init_out_session(AVFilterContext *ctx, int in_width, int in_height)
 {
 
 QSVScaleContext   *s = ctx->priv;
@@ -385,8 +385,11 @@ static int init_out_session(AVFilterContext *ctx)
  sizeof(*s->mem_ids_in));
 if (!s->mem_ids_in)
 return AVERROR(ENOMEM);
-for (i = 0; i < in_frames_hwctx->nb_surfaces; i++)
+for (i = 0; i < in_frames_hwctx->nb_surfaces; i++) {
 s->mem_ids_in[i] = in_frames_hwctx->surfaces[i].Data.MemId;
+in_frames_hwctx->surfaces[i].Info.CropW = in_width;
+in_frames_hwctx->surfaces[i].Info.CropH = in_height;
+}
 s->nb_mem_ids_in = in_frames_hwctx->nb_surfaces;
 
 s->mem_ids_out = av_mallocz_array(out_frames_hwctx->nb_surfaces,
@@ -450,7 +453,7 @@ static int init_scale_session(AVFilterContext *ctx, int 
in_width, int in_height,
 if (ret < 0)
 return ret;
 
-ret = init_out_session(ctx);
+ret = init_out_session(ctx, in_width, in_height);
 if (ret < 0)
 return ret;
 
-- 
2.26.2

___
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".