summaryrefslogtreecommitdiff
path: root/libavfilter/vf_deinterlace_qsv.c
diff options
context:
space:
mode:
authorLinjie Fu <linjie.fu@intel.com>2019-03-08 23:34:01 +0800
committerZhong Li <zhong.li@intel.com>2019-03-08 15:08:16 +0800
commit147ef1d9472ea39f837224bc8a2fbe07a9f04ae3 (patch)
tree451bb431d86b0b7f2a64db476b633f46ad023bab /libavfilter/vf_deinterlace_qsv.c
parentf95aee2b72535e14b7463750fd7afb6d1cdbe4d4 (diff)
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> Signed-off-by: Zhong Li <zhong.li@intel.com>
Diffstat (limited to 'libavfilter/vf_deinterlace_qsv.c')
-rw-r--r--libavfilter/vf_deinterlace_qsv.c6
1 files 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;