Showing the changes to codec/encoder/core/src/wels_task_encoder.cpp (1 of 15 files). Show all
Unified · Split
| @@ -63,6 +63,18 @@ CWelsSliceEncodingTask::CWelsSliceEncodingTask (sWelsEncCtx* pCtx, const int32_t · 62 unmodified lines | ||
| 63 | 63 | CWelsSliceEncodingTask::~CWelsSliceEncodingTask() { |
| 64 | 64 | } |
| 65 | 65 | |
| 66 | +WelsErrorType CWelsSliceEncodingTask::Execute() { | |
| 67 | + WelsThreadSetName ("OpenH264Enc_CWelsSliceEncodingTask_Execute"); | |
| 68 | + | |
| 69 | + int32_t iReturn = InitTask(); | |
| 70 | + WELS_VERIFY_RETURN_IFNEQ (iReturn, ENC_RETURN_SUCCESS) | |
| 71 | + | |
| 72 | + iReturn = ExecuteTask(); | |
| 73 | + | |
| 74 | + FinishTask(); | |
| 75 | + return ENC_RETURN_SUCCESS; | |
| 76 | +} | |
| 77 | + | |
| 66 | 78 | WelsErrorType CWelsSliceEncodingTask::SetBoundary (int32_t iStartIdx, int32_t iEndIdx) { |
| 67 | 79 | m_iStartMbIdx = iStartIdx; |
| 68 | 80 | m_iEndMbIdx = iEndIdx; |
| @@ -88,10 +100,11 @@ WelsErrorType CWelsSliceEncodingTask::InitTask() { · 19 unmodified lines | ||
| 88 | 100 | m_iThreadIdx = QueryEmptyThread (m_pCtx->pSliceThreading->bThreadBsBufferUsage); |
| 89 | 101 | WelsMutexUnlock (&m_pCtx->pSliceThreading->mutexThreadBsBufferUsage); |
| 90 | 102 | if (m_iThreadIdx < 0) { |
| 91 | − printf ("cannot find avaialble thread %d\n", m_iThreadIdx); | |
| 103 | + WelsLog (&m_pCtx->sLogCtx, WELS_LOG_WARNING, | |
| 104 | + "[MT] CWelsSliceEncodingTask InitTask(), Cannot find available thread for m_iSliceIdx = %d", m_iSliceIdx); | |
| 92 | 105 | return ENC_RETURN_UNEXPECTED; |
| 93 | 106 | } |
| 94 | − SetOneSliceBsBufferUnderMultithread (m_pCtx, m_iSliceIdx, m_iThreadIdx); | |
| 107 | + SetOneSliceBsBufferUnderMultithread (m_pCtx, m_iThreadIdx, m_iSliceIdx); | |
| 95 | 108 | |
| 96 | 109 | m_pSlice = &m_pCtx->pCurDqLayer->sLayerInfo.pSliceInLayer[m_iSliceIdx]; |
| 97 | 110 | m_pSliceBs = &m_pCtx->pSliceBs[m_iSliceIdx]; |
| @@ -101,18 +114,18 @@ WelsErrorType CWelsSliceEncodingTask::InitTask() { · 3 unmodified lines | ||
| 101 | 114 | |
| 102 | 115 | assert ((void*) (&m_pSliceBs->sBsWrite) == (void*)m_pSlice->pSliceBsa); |
| 103 | 116 | InitBits (&m_pSliceBs->sBsWrite, m_pSliceBs->pBsBuffer, m_pSliceBs->uiSize); |
| 117 | + //printf ("CWelsSliceEncodingTask_InitTask slice %d\n", m_iSliceIdx); | |
| 104 | 118 | |
| 105 | 119 | return ENC_RETURN_SUCCESS; |
| 106 | 120 | } |
| 121 | + | |
| 107 | 122 | void CWelsSliceEncodingTask::FinishTask() { |
| 108 | 123 | WelsMutexLock (&m_pCtx->pSliceThreading->mutexThreadBsBufferUsage); |
| 109 | 124 | m_pCtx->pSliceThreading->bThreadBsBufferUsage[m_iThreadIdx] = false; |
| 110 | 125 | WelsMutexUnlock (&m_pCtx->pSliceThreading->mutexThreadBsBufferUsage); |
| 111 | 126 | } |
| 112 | 127 | |
| 113 | −WelsErrorType CWelsSliceEncodingTask::Execute() { | |
| 114 | − WelsThreadSetName ("OpenH264Enc_CWelsSliceEncodingTask_Execute"); | |
| 115 | − | |
| 128 | +WelsErrorType CWelsSliceEncodingTask::ExecuteTask() { | |
| 116 | 129 | #if MT_DEBUG_BS_WR |
| 117 | 130 | m_pSliceBs->bSliceCodedFlag = false; |
| 118 | 131 | #endif//MT_DEBUG_BS_WR |
| @@ -144,6 +157,10 @@ WelsErrorType CWelsSliceEncodingTask::Execute() { · 25 unmodified lines | ||
| 144 | 157 | iLeftBufferSize, |
| 145 | 158 | m_iSliceIdx, m_iSliceSize); |
| 146 | 159 | if (ENC_RETURN_SUCCESS != iReturn) { |
| 160 | + WelsLog (&m_pCtx->sLogCtx, WELS_LOG_WARNING, | |
| 161 | + "[MT] CWelsSliceEncodingTask ExecuteTask(), WriteSliceBs not successful: coding_idx %d, um_iSliceIdx %d", | |
| 162 | + m_pCtx->iCodingIndex, | |
| 163 | + m_iSliceIdx); | |
| 147 | 164 | return iReturn; |
| 148 | 165 | } |
| 149 | 166 | if (0 == m_iSliceIdx) { |
| @@ -152,15 +169,11 @@ WelsErrorType CWelsSliceEncodingTask::Execute() { · 2 unmodified lines | ||
| 152 | 169 | |
| 153 | 170 | m_pCtx->pFuncList->pfDeblocking.pfDeblockingFilterSlice (m_pCtx->pCurDqLayer, m_pCtx->pFuncList, m_iSliceIdx); |
| 154 | 171 | |
| 155 | −#if defined(SLICE_INFO_OUTPUT) | |
| 156 | − fprintf (stderr, | |
| 157 | − "@pSlice=%-6d sliceType:%c idc:%d size:%-6d\n", | |
| 158 | − m_iSliceIdx, | |
| 159 | − (pEncPEncCtx->eSliceType == P_SLICE ? 'P' : 'I'), | |
| 160 | − eNalRefIdc, | |
| 161 | − iSliceSize | |
| 162 | − ); | |
| 163 | −#endif//SLICE_INFO_OUTPUT | |
| 172 | + WelsLog (&m_pCtx->sLogCtx, WELS_LOG_DETAIL, | |
| 173 | + "@pSlice=%-6d sliceType:%c idc:%d size:%-6d", m_iSliceIdx, | |
| 174 | + (m_pCtx->eSliceType == P_SLICE ? 'P' : 'I'), | |
| 175 | + m_eNalRefIdc, | |
| 176 | + m_iSliceSize); | |
| 164 | 177 | |
| 165 | 178 | #if MT_DEBUG_BS_WR |
| 166 | 179 | m_pSliceBs->bSliceCodedFlag = true; |