diff --git a/_studio/mfx_lib/vpp/include/mfx_vpp_ai_frame_interpolation.h b/_studio/mfx_lib/vpp/include/mfx_vpp_ai_frame_interpolation.h index c10f528f2..28b63e9a4 100644 --- a/_studio/mfx_lib/vpp/include/mfx_vpp_ai_frame_interpolation.h +++ b/_studio/mfx_lib/vpp/include/mfx_vpp_ai_frame_interpolation.h @@ -48,6 +48,8 @@ class MFXVideoFrameInterpolation MFXVideoFrameInterpolation(); virtual ~MFXVideoFrameInterpolation(); + static mfxStatus Query(VideoCORE* core); + mfxStatus Init( VideoCORE* core, const mfxFrameInfo& inInfo, diff --git a/_studio/mfx_lib/vpp/src/mfx_vpp_ai_frame_interpolation.cpp b/_studio/mfx_lib/vpp/src/mfx_vpp_ai_frame_interpolation.cpp index 593d1eeae..335a19188 100644 --- a/_studio/mfx_lib/vpp/src/mfx_vpp_ai_frame_interpolation.cpp +++ b/_studio/mfx_lib/vpp/src/mfx_vpp_ai_frame_interpolation.cpp @@ -736,4 +736,18 @@ mfxStatus MFXVideoFrameInterpolation::AddTaskQueue(mfxU32 taskIndex) m_outStamp = 0; } return MFX_ERR_NONE; +} + +mfxStatus MFXVideoFrameInterpolation::Query(VideoCORE* core) +{ + MFX_CHECK_NULL_PTR1(core); + auto platform = core->GetHWType(); + if (platform == MFX_HW_DG2 || platform >= MFX_HW_MTL) + { + return MFX_ERR_NONE; + } + else + { + MFX_RETURN(MFX_ERR_UNSUPPORTED); + } } \ No newline at end of file diff --git a/_studio/mfx_lib/vpp/src/mfx_vpp_sw_internal.cpp b/_studio/mfx_lib/vpp/src/mfx_vpp_sw_internal.cpp index 28dffdf3f..4ac82c205 100644 --- a/_studio/mfx_lib/vpp/src/mfx_vpp_sw_internal.cpp +++ b/_studio/mfx_lib/vpp/src/mfx_vpp_sw_internal.cpp @@ -384,7 +384,7 @@ bool IsCompositionMode(mfxVideoParam* pParam) return false; } -mfxStatus ExtendedQuery(VideoCORE *, mfxU32 filterName, mfxExtBuffer* pHint) +mfxStatus ExtendedQuery(VideoCORE *core, mfxU32 filterName, mfxExtBuffer* pHint) { if( MFX_EXTBUFF_VPP_DENOISE == filterName || MFX_EXTBUFF_VPP_DENOISE2 == filterName @@ -437,6 +437,10 @@ mfxStatus ExtendedQuery(VideoCORE *, mfxU32 filterName, mfxExtBuffer* pHint) { MFX_RETURN(CheckScalingParam(pHint)); } + else if (MFX_EXTBUFF_VPP_AI_FRAME_INTERPOLATION == filterName) + { + MFX_RETURN(MFXVideoFrameInterpolation::Query(core)); + } else // ignore { return MFX_ERR_NONE;