X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_deinterlace_qsv.c;h=d6b02e98c5b2889edf162d64794f4cffca38e892;hb=185aa5e896e15ae96145609944bfc6bbb239bc64;hp=897e6bd622135f52c1da8a2fb6e0f63bc247f349;hpb=b656fa710a34ec7c3b192c38344a2c470ff2eaf5;p=ffmpeg diff --git a/libavfilter/vf_deinterlace_qsv.c b/libavfilter/vf_deinterlace_qsv.c index 897e6bd6221..d6b02e98c5b 100644 --- a/libavfilter/vf_deinterlace_qsv.c +++ b/libavfilter/vf_deinterlace_qsv.c @@ -35,6 +35,7 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" #include "libavutil/time.h" +#include "libavfilter/qsvvpp.h" #include "avfilter.h" #include "formats.h" @@ -201,6 +202,11 @@ static int init_out_session(AVFilterContext *ctx) } } + if (err != MFX_ERR_NONE) { + av_log(ctx, AV_LOG_ERROR, "Error getting the session handle\n"); + return AVERROR_UNKNOWN; + } + /* create a "slave" session with those same properties, to be used for * actual deinterlacing */ err = MFXInit(impl, &ver, &s->session); @@ -215,6 +221,12 @@ static int init_out_session(AVFilterContext *ctx) return AVERROR_UNKNOWN; } + if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) { + err = MFXJoinSession(device_hwctx->session, s->session); + if (err != MFX_ERR_NONE) + return AVERROR_UNKNOWN; + } + memset(&par, 0, sizeof(par)); s->deint_conf.Header.BufferId = MFX_EXTBUFF_VPP_DEINTERLACING;