From 66165a65d5e204ca8db31220aa7e3523d79b569a Mon Sep 17 00:00:00 2001 From: ruil2 Date: Thu, 13 Nov 2014 13:26:14 +0800 Subject: [PATCH] add return value processing --- codec/encoder/core/src/encoder_ext.cpp | 9 +++++++-- codec/encoder/core/src/slice_multi_threading.cpp | 7 +++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/codec/encoder/core/src/encoder_ext.cpp b/codec/encoder/core/src/encoder_ext.cpp index 6d13542b..fa449f17 100644 --- a/codec/encoder/core/src/encoder_ext.cpp +++ b/codec/encoder/core/src/encoder_ext.cpp @@ -2086,9 +2086,14 @@ int32_t WelsInitEncoderExt (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPar return iRet; } - if (pCodingParam->iMultipleThreadIdc > 1) + if (pCodingParam->iMultipleThreadIdc > 1) { iRet = CreateSliceThreads (pCtx); - + if (iRet != 0) { + WelsLog (pLogCtx, WELS_LOG_ERROR, "WelsInitEncoderExt(), CreateSliceThreads failed return %d.", iRet); + FreeMemorySvc (&pCtx); + return iRet; + } + } if (pCodingParam->iEntropyCodingModeFlag) WelsCabacInit (pCtx); WelsRcInitModule (pCtx, pCtx->pSvcParam->iRCMode); diff --git a/codec/encoder/core/src/slice_multi_threading.cpp b/codec/encoder/core/src/slice_multi_threading.cpp index 2335ee0a..d5dce0a3 100644 --- a/codec/encoder/core/src/slice_multi_threading.cpp +++ b/codec/encoder/core/src/slice_multi_threading.cpp @@ -963,8 +963,11 @@ int32_t CreateSliceThreads (sWelsEncCtx* pCtx) { int32_t iIdx = 0; while (iIdx < kiThreadCount) { - WelsThreadCreate (&pCtx->pSliceThreading->pThreadHandles[iIdx], CodingSliceThreadProc, - &pCtx->pSliceThreading->pThreadPEncCtx[iIdx], 0); + if (WelsThreadCreate (&pCtx->pSliceThreading->pThreadHandles[iIdx], CodingSliceThreadProc, + &pCtx->pSliceThreading->pThreadPEncCtx[iIdx], 0)) { + return 1; + } + ++ iIdx; }