MCPcopy Create free account
hub / github.com/cisco/openh264 / ExecuteTask

Method ExecuteTask

codec/encoder/core/src/wels_task_encoder.cpp:148–197  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

146}
147
148WelsErrorType CWelsSliceEncodingTask::ExecuteTask() {
149
150#if MT_DEBUG_BS_WR
151 m_pSliceBs->bSliceCodedFlag = false;
152#endif//MT_DEBUG_BS_WR
153 SSpatialLayerInternal* pParamInternal = &m_pCtx->pSvcParam->sDependencyLayers[m_pCtx->uiDependencyId];
154 if (m_bNeedPrefix) {
155 if (m_eNalRefIdc != NRI_PRI_LOWEST) {
156 WelsLoadNalForSlice (m_pSliceBs, NAL_UNIT_PREFIX, m_eNalRefIdc);
157 WelsWriteSVCPrefixNal (&m_pSliceBs->sBsWrite, m_eNalRefIdc, (NAL_UNIT_CODED_SLICE_IDR == m_eNalType));
158 WelsUnloadNalForSlice (m_pSliceBs);
159 } else { // No Prefix NAL Unit RBSP syntax here, but need add NAL Unit Header extension
160 WelsLoadNalForSlice (m_pSliceBs, NAL_UNIT_PREFIX, m_eNalRefIdc);
161 // No need write any syntax of prefix NAL Unit RBSP here
162 WelsUnloadNalForSlice (m_pSliceBs);
163 }
164 }
165
166 WelsLoadNalForSlice (m_pSliceBs, m_eNalType, m_eNalRefIdc);
167 assert (m_iSliceIdx == (int) m_pSlice->iSliceIdx);
168 int32_t iReturn = WelsCodeOneSlice (m_pCtx, m_pSlice, m_eNalType);
169 if (ENC_RETURN_SUCCESS != iReturn) {
170 return iReturn;
171 }
172 WelsUnloadNalForSlice (m_pSliceBs);
173
174 m_iSliceSize = 0;
175 iReturn = WriteSliceBs (m_pCtx, m_pSliceBs, m_iSliceIdx, m_iSliceSize);
176 if (ENC_RETURN_SUCCESS != iReturn) {
177 WelsLog (&m_pCtx->sLogCtx, WELS_LOG_WARNING,
178 "[MT] CWelsSliceEncodingTask ExecuteTask(), WriteSliceBs not successful: coding_idx %d, um_iSliceIdx %d",
179 pParamInternal->iCodingIndex,
180 m_iSliceIdx);
181 return iReturn;
182 }
183
184 m_pCtx->pFuncList->pfDeblocking.pfDeblockingFilterSlice (m_pCtx->pCurDqLayer, m_pCtx->pFuncList, m_pSlice);
185
186 WelsLog (&m_pCtx->sLogCtx, WELS_LOG_DETAIL,
187 "@pSlice=%-6d sliceType:%c idc:%d size:%-6d", m_iSliceIdx,
188 (m_pCtx->eSliceType == P_SLICE ? 'P' : 'I'),
189 m_eNalRefIdc,
190 m_iSliceSize);
191
192#if MT_DEBUG_BS_WR
193 m_pSliceBs->bSliceCodedFlag = true;
194#endif//MT_DEBUG_BS_WR
195
196 return ENC_RETURN_SUCCESS;
197}
198
199
200// CWelsLoadBalancingSlicingEncodingTask

Callers

nothing calls this directly

Calls 11

WelsLoadNalForSliceFunction · 0.85
WelsWriteSVCPrefixNalFunction · 0.85
WelsUnloadNalForSliceFunction · 0.85
WelsCodeOneSliceFunction · 0.85
WriteSliceBsFunction · 0.85
WelsLogFunction · 0.85
WelsMutexLockFunction · 0.85
ReallocateSliceInThreadFunction · 0.85
WelsMutexUnlockFunction · 0.85
InitOneSliceInThreadFunction · 0.85
InitBitsFunction · 0.85

Tested by

no test coverage detected