History

add error handling of task returns

sijchen committed 11 years ago

Commit 6fe05b01 parent b5d890c2 files · +14 −5Browse files

Showing the changes to codec/encoder/core/src/wels_task_encoder.cpp (1 of 2 files). Show all

Unified · Split

codec/encoder/core/src/wels_task_encoder.cpp+12−5
@@ -55,7 +55,7 @@ · 54 unmodified lines
5555
5656 namespace WelsEnc {
5757
58−CWelsSliceEncodingTask::CWelsSliceEncodingTask (sWelsEncCtx* pCtx, const int32_t iSliceIdx) {
58+CWelsSliceEncodingTask::CWelsSliceEncodingTask (sWelsEncCtx* pCtx, const int32_t iSliceIdx) : m_eTaskResult(ENC_RETURN_SUCCESS) {
5959 m_pCtx = pCtx;
6060 m_iSliceIdx = iSliceIdx;
6161 }
@@ -66,13 +66,13 @@ CWelsSliceEncodingTask::~CWelsSliceEncodingTask() { · 4 unmodified lines
6666 WelsErrorType CWelsSliceEncodingTask::Execute() {
6767 WelsThreadSetName ("OpenH264Enc_CWelsSliceEncodingTask_Execute");
6868
69− int32_t iReturn = InitTask();
70− WELS_VERIFY_RETURN_IFNEQ (iReturn, ENC_RETURN_SUCCESS)
69+ m_eTaskResult = InitTask();
70+ WELS_VERIFY_RETURN_IFNEQ (m_eTaskResult, ENC_RETURN_SUCCESS)
7171
72− iReturn = ExecuteTask();
72+ m_eTaskResult = ExecuteTask();
7373
7474 FinishTask();
75− return ENC_RETURN_SUCCESS;
75+ return m_eTaskResult;
7676 }
7777
7878 WelsErrorType CWelsSliceEncodingTask::SetBoundary (int32_t iStartIdx, int32_t iEndIdx) {
@@ -131,6 +131,13 @@ void CWelsSliceEncodingTask::FinishTask() { · 52 unmodified lines
131131 WelsLog (&m_pCtx->sLogCtx, WELS_LOG_DEBUG,
132132 "[MT] CWelsSliceEncodingTask()FinishTask for m_iSliceIdx %d, unlock thread %d",
133133 m_iSliceIdx, m_iThreadIdx);
134+
135+ //sync multi-threading error
136+ WelsMutexLock (&m_pCtx->mutexEncoderError);
137+ if (ENC_RETURN_SUCCESS != m_eTaskResult) {
138+ m_pCtx->iEncoderError |= m_eTaskResult;
139+ }
140+ WelsMutexUnlock (&m_pCtx->mutexEncoderError);
134141 }
135142
136143 WelsErrorType CWelsSliceEncodingTask::ExecuteTask() {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t