diff --git a/_studio/mfx_lib/encode_hw/av1/agnostic/base/av1ehw_base_enctools_com.cpp b/_studio/mfx_lib/encode_hw/av1/agnostic/base/av1ehw_base_enctools_com.cpp index eca7a739b6..cdece56bee 100644 --- a/_studio/mfx_lib/encode_hw/av1/agnostic/base/av1ehw_base_enctools_com.cpp +++ b/_studio/mfx_lib/encode_hw/av1/agnostic/base/av1ehw_base_enctools_com.cpp @@ -358,7 +358,7 @@ void AV1EncToolsCommon::InitInternal(const FeatureBlocks& /*blocks*/, TPushII Pu MFX_CHECK(bEncTools, MFX_ERR_NONE); MFX_CHECK(!m_pEncTools, MFX_ERR_NONE); - mfxEncTools* encTools = GetEncTools(par); + m_pEncTools = GetEncTools(par); mfxEncToolsCtrlExtDevice extBufDevice = {}; mfxEncToolsCtrlExtAllocator extBufAlloc = {}; mfxExtBuffer* ExtParam[2] = {}; @@ -389,29 +389,38 @@ void AV1EncToolsCommon::InitInternal(const FeatureBlocks& /*blocks*/, TPushII Pu MFX_CHECK_STS(sts); m_bEncToolsInner = false; - if (!(encTools && encTools->Context)) + if (!(m_pEncTools && m_pEncTools->Context)) { - encTools = MFXVideoENCODE_CreateEncTools(par); - m_bEncToolsInner = !!encTools; + m_pEncTools = MFXVideoENCODE_CreateEncTools(par); + m_bEncToolsInner = !!m_pEncTools; } - if (encTools) + + m_destroy = [this]() { + if (m_bEncToolsInner) + MFXVideoENCODE_DestroyEncTools(m_pEncTools); + m_bEncToolsInner = false; + + }; + + if (m_pEncTools) + { mfxExtEncToolsConfig supportedConfig = {}; - encTools->GetSupportedConfig(encTools->Context, &supportedConfig, &m_EncToolCtrl); + m_pEncTools->GetSupportedConfig(m_pEncTools->Context, &supportedConfig, &m_EncToolCtrl); if (CorrectVideoParams(par, supportedConfig)) MFX_RETURN(MFX_ERR_INCOMPATIBLE_VIDEO_PARAM); SetDefaultConfig(par, m_EncToolConfig, caps.ForcedSegmentationSupport); - sts = encTools->Init(encTools->Context, &m_EncToolConfig, &m_EncToolCtrl); + sts = m_pEncTools->Init(m_pEncTools->Context, &m_EncToolConfig, &m_EncToolCtrl); MFX_CHECK_STS(sts); - sts = encTools->GetActiveConfig(encTools->Context, &m_EncToolConfig); + sts = m_pEncTools->GetActiveConfig(m_pEncTools->Context, &m_EncToolConfig); MFX_CHECK_STS(sts); - encTools->GetDelayInFrames(encTools->Context, &m_EncToolConfig, &m_EncToolCtrl, &m_maxDelay); + m_pEncTools->GetDelayInFrames(m_pEncTools->Context, &m_EncToolConfig, &m_EncToolCtrl, &m_maxDelay); auto& taskMgrIface = TaskManager::TMInterface::Get(strg); auto& tm = taskMgrIface.m_Manager; @@ -419,17 +428,8 @@ void AV1EncToolsCommon::InitInternal(const FeatureBlocks& /*blocks*/, TPushII Pu S_ET_SUBMIT = tm.AddStage(tm.S_NEW); S_ET_QUERY = tm.AddStage(S_ET_SUBMIT); - m_pEncTools = encTools; } - m_destroy = [this]() - { - if (m_bEncToolsInner) - MFXVideoENCODE_DestroyEncTools(m_pEncTools); - m_bEncToolsInner = false; - - }; - return MFX_ERR_NONE; });