Skip to content

Commit 30963ed

Browse files
gfxVPLsdmleyu-yao
authored andcommitted
[Encode] Fix Coverity issue in av1 (#5823)
Avoid resource leak when function returns on error Co-authored-by: Yao, Leyu <[email protected]>
1 parent 054d1be commit 30963ed

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

_studio/mfx_lib/encode_hw/av1/agnostic/base/av1ehw_base_enctools_com.cpp

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ void AV1EncToolsCommon::InitInternal(const FeatureBlocks& /*blocks*/, TPushII Pu
358358
MFX_CHECK(bEncTools, MFX_ERR_NONE);
359359
MFX_CHECK(!m_pEncTools, MFX_ERR_NONE);
360360

361-
mfxEncTools* encTools = GetEncTools(par);
361+
m_pEncTools = GetEncTools(par);
362362
mfxEncToolsCtrlExtDevice extBufDevice = {};
363363
mfxEncToolsCtrlExtAllocator extBufAlloc = {};
364364
mfxExtBuffer* ExtParam[2] = {};
@@ -389,47 +389,47 @@ void AV1EncToolsCommon::InitInternal(const FeatureBlocks& /*blocks*/, TPushII Pu
389389
MFX_CHECK_STS(sts);
390390

391391
m_bEncToolsInner = false;
392-
if (!(encTools && encTools->Context))
392+
if (!(m_pEncTools && m_pEncTools->Context))
393393
{
394-
encTools = MFXVideoENCODE_CreateEncTools(par);
395-
m_bEncToolsInner = !!encTools;
394+
m_pEncTools = MFXVideoENCODE_CreateEncTools(par);
395+
m_bEncToolsInner = !!m_pEncTools;
396396
}
397-
if (encTools)
397+
398+
m_destroy = [this]()
398399
{
400+
if (m_bEncToolsInner)
401+
MFXVideoENCODE_DestroyEncTools(m_pEncTools);
402+
m_bEncToolsInner = false;
403+
404+
};
405+
406+
if (m_pEncTools)
407+
{
399408
mfxExtEncToolsConfig supportedConfig = {};
400409

401-
encTools->GetSupportedConfig(encTools->Context, &supportedConfig, &m_EncToolCtrl);
410+
m_pEncTools->GetSupportedConfig(m_pEncTools->Context, &supportedConfig, &m_EncToolCtrl);
402411

403412
if (CorrectVideoParams(par, supportedConfig))
404413
MFX_RETURN(MFX_ERR_INCOMPATIBLE_VIDEO_PARAM);
405414

406415
SetDefaultConfig(par, m_EncToolConfig, caps.ForcedSegmentationSupport);
407416

408-
sts = encTools->Init(encTools->Context, &m_EncToolConfig, &m_EncToolCtrl);
417+
sts = m_pEncTools->Init(m_pEncTools->Context, &m_EncToolConfig, &m_EncToolCtrl);
409418
MFX_CHECK_STS(sts);
410419

411-
sts = encTools->GetActiveConfig(encTools->Context, &m_EncToolConfig);
420+
sts = m_pEncTools->GetActiveConfig(m_pEncTools->Context, &m_EncToolConfig);
412421
MFX_CHECK_STS(sts);
413422

414-
encTools->GetDelayInFrames(encTools->Context, &m_EncToolConfig, &m_EncToolCtrl, &m_maxDelay);
423+
m_pEncTools->GetDelayInFrames(m_pEncTools->Context, &m_EncToolConfig, &m_EncToolCtrl, &m_maxDelay);
415424

416425
auto& taskMgrIface = TaskManager::TMInterface::Get(strg);
417426
auto& tm = taskMgrIface.m_Manager;
418427

419428
S_ET_SUBMIT = tm.AddStage(tm.S_NEW);
420429
S_ET_QUERY = tm.AddStage(S_ET_SUBMIT);
421430

422-
m_pEncTools = encTools;
423431
}
424432

425-
m_destroy = [this]()
426-
{
427-
if (m_bEncToolsInner)
428-
MFXVideoENCODE_DestroyEncTools(m_pEncTools);
429-
m_bEncToolsInner = false;
430-
431-
};
432-
433433
return MFX_ERR_NONE;
434434
});
435435

0 commit comments

Comments
 (0)