diff mbox

[FFmpeg-devel,v2] lavf/deinterlace_qsv: set specific field for repeat

Message ID 20190308153401.12297-1-linjie.fu@intel.com
State Accepted
Commit 147ef1d9472ea39f837224bc8a2fbe07a9f04ae3
Headers show

Commit Message

Fu, Linjie March 8, 2019, 3:34 p.m. UTC
Set specific field for repeat in PicStruct if the frame has repeat
flag.

Match the CheckInputPicStruct in MSDK.

Fix #7701.

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
---
 libavfilter/vf_deinterlace_qsv.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Zhong Li March 8, 2019, 7:46 a.m. UTC | #1
> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces@ffmpeg.org] On Behalf

> Of Linjie Fu

> Sent: Friday, March 8, 2019 11:34 PM

> To: ffmpeg-devel@ffmpeg.org

> Cc: Fu, Linjie <linjie.fu@intel.com>

> Subject: [FFmpeg-devel] [PATCH, v2] lavf/deinterlace_qsv: set specific field

> for repeat

> 

> Set specific field for repeat in PicStruct if the frame has repeat flag.

> 

> Match the CheckInputPicStruct in MSDK.

> 

> Fix #7701.

> 

> Signed-off-by: Linjie Fu <linjie.fu@intel.com>

> ---

>  libavfilter/vf_deinterlace_qsv.c | 6 ++++--

>  1 file changed, 4 insertions(+), 2 deletions(-)

> 

> diff --git a/libavfilter/vf_deinterlace_qsv.c b/libavfilter/vf_deinterlace_qsv.c

> index d6b02e98c5..bee10c220f 100644

> --- a/libavfilter/vf_deinterlace_qsv.c

> +++ b/libavfilter/vf_deinterlace_qsv.c

> @@ -419,9 +419,11 @@ static int submit_frame(AVFilterContext *ctx,

> AVFrame *frame,

>      qf->surface.Info.PicStruct = !qf->frame->interlaced_frame ?

> MFX_PICSTRUCT_PROGRESSIVE :

>                                   (qf->frame->top_field_first ?

> MFX_PICSTRUCT_FIELD_TFF :

> 

> MFX_PICSTRUCT_FIELD_BFF);

> -    if (qf->frame->repeat_pict == 1)

> +    if (qf->frame->repeat_pict == 1) {

>          qf->surface.Info.PicStruct |= MFX_PICSTRUCT_FIELD_REPEATED;

> -    else if (qf->frame->repeat_pict == 2)

> +        qf->surface.Info.PicStruct |= qf->frame->top_field_first ?

> MFX_PICSTRUCT_FIELD_TFF :

> +

> MFX_PICSTRUCT_FIELD_BFF;

> +    } else if (qf->frame->repeat_pict == 2)

>          qf->surface.Info.PicStruct |=

> MFX_PICSTRUCT_FRAME_DOUBLING;

>      else if (qf->frame->repeat_pict == 4)

>          qf->surface.Info.PicStruct |= MFX_PICSTRUCT_FRAME_TRIPLING;

> --

> 2.17.1


LGTM, will apply.
diff mbox

Patch

diff --git a/libavfilter/vf_deinterlace_qsv.c b/libavfilter/vf_deinterlace_qsv.c
index d6b02e98c5..bee10c220f 100644
--- a/libavfilter/vf_deinterlace_qsv.c
+++ b/libavfilter/vf_deinterlace_qsv.c
@@ -419,9 +419,11 @@  static int submit_frame(AVFilterContext *ctx, AVFrame *frame,
     qf->surface.Info.PicStruct = !qf->frame->interlaced_frame ? MFX_PICSTRUCT_PROGRESSIVE :
                                  (qf->frame->top_field_first ? MFX_PICSTRUCT_FIELD_TFF :
                                                            MFX_PICSTRUCT_FIELD_BFF);
-    if (qf->frame->repeat_pict == 1)
+    if (qf->frame->repeat_pict == 1) {
         qf->surface.Info.PicStruct |= MFX_PICSTRUCT_FIELD_REPEATED;
-    else if (qf->frame->repeat_pict == 2)
+        qf->surface.Info.PicStruct |= qf->frame->top_field_first ? MFX_PICSTRUCT_FIELD_TFF :
+                                                            MFX_PICSTRUCT_FIELD_BFF;
+    } else if (qf->frame->repeat_pict == 2)
         qf->surface.Info.PicStruct |= MFX_PICSTRUCT_FRAME_DOUBLING;
     else if (qf->frame->repeat_pict == 4)
         qf->surface.Info.PicStruct |= MFX_PICSTRUCT_FRAME_TRIPLING;