Showing the changes to codec/encoder/core/src/slice_multi_threading.cpp (1 of 16 files). Show all
Unified · Split
| @@ -132,7 +132,7 @@ void CalcSliceComplexRatio (void* pRatio, SSliceCtx* pSliceCtx, uint32_t* pSlice · 131 unmodified lines | |||
| 132 | 132 | ||
| 133 | while (iSliceIdx < kiSliceCount) { | 133 | while (iSliceIdx < kiSliceCount) { |
| 134 | iAvI[iSliceIdx] = WELS_DIV_ROUND (INT_MULTIPLY * pCountMbInSlice[iSliceIdx], pSliceTime[iSliceIdx]); | 134 | iAvI[iSliceIdx] = WELS_DIV_ROUND (INT_MULTIPLY * pCountMbInSlice[iSliceIdx], pSliceTime[iSliceIdx]); |
| 135 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, "[MT] CalcSliceComplexRatio(), pSliceConsumeTime[%d]= %d us, slice_run= %d\n", | 135 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, "[MT] CalcSliceComplexRatio(), pSliceConsumeTime[%d]= %d us, slice_run= %d", |
| 136 | iSliceIdx, | 136 | iSliceIdx, |
| 137 | pSliceTime[iSliceIdx], pCountMbInSlice[iSliceIdx]); | 137 | pSliceTime[iSliceIdx], pCountMbInSlice[iSliceIdx]); |
| 138 | iSumAv += iAvI[iSliceIdx]; | 138 | iSumAv += iAvI[iSliceIdx]; |
| @@ -158,7 +158,7 @@ int32_t NeedDynamicAdjust (void* pConsumeTime, const int32_t iSliceNum) { · 19 unmodified lines | |||
| 158 | } | 158 | } |
| 159 | if (uiTotalConsume == 0) { | 159 | if (uiTotalConsume == 0) { |
| 160 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, | 160 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, |
| 161 | "[MT] NeedDynamicAdjust(), herein do no adjust due first picture, iCountSliceNum= %d\n", | 161 | "[MT] NeedDynamicAdjust(), herein do no adjust due first picture, iCountSliceNum= %d", |
| 162 | iSliceNum); | 162 | iSliceNum); |
| 163 | return false; | 163 | return false; |
| 164 | } | 164 | } |
| @@ -185,7 +185,7 @@ int32_t NeedDynamicAdjust (void* pConsumeTime, const int32_t iSliceNum) { · 20 unmodified lines | |||
| 185 | if (fRmse > fThr) | 185 | if (fRmse > fThr) |
| 186 | iNeedAdj = true; | 186 | iNeedAdj = true; |
| 187 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, | 187 | MT_TRACE_LOG (NULL, WELS_LOG_DEBUG, |
| 188 | "[MT] NeedDynamicAdjust(), herein adjustment decision is made (iNeedAdj= %d) by: fRmse of pSlice complexity ratios %.6f, the corresponding threshold %.6f, iCountSliceNum %d\n", | 188 | "[MT] NeedDynamicAdjust(), herein adjustment decision is made (iNeedAdj= %d) by: fRmse of pSlice complexity ratios %.6f, the corresponding threshold %.6f, iCountSliceNum %d", |
| 189 | iNeedAdj, fRmse, fThr, iSliceNum); | 189 | iNeedAdj, fRmse, fThr, iSliceNum); |
| 190 | 190 | ||
| 191 | return iNeedAdj; | 191 | return iNeedAdj; |
| @@ -212,7 +212,7 @@ void DynamicAdjustSlicing (sWelsEncCtx* pCtx, · 20 unmodified lines | |||
| 212 | 212 | ||
| 213 | if (iNumMbInEachGom <= 0) { | 213 | if (iNumMbInEachGom <= 0) { |
| 214 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, | 214 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, |
| 215 | "[MT] DynamicAdjustSlicing(), invalid iNumMbInEachGom= %d from RC, iDid= %d, iCountNumMb= %d\n", iNumMbInEachGom, | 215 | "[MT] DynamicAdjustSlicing(), invalid iNumMbInEachGom= %d from RC, iDid= %d, iCountNumMb= %d", iNumMbInEachGom, |
| 216 | iCurDid, kiCountNumMb); | 216 | iCurDid, kiCountNumMb); |
| 217 | return; | 217 | return; |
| 218 | } | 218 | } |
| @@ -232,7 +232,7 @@ void DynamicAdjustSlicing (sWelsEncCtx* pCtx, · 13 unmodified lines | |||
| 232 | 232 | ||
| 233 | WelsEmms(); | 233 | WelsEmms(); |
| 234 | 234 | ||
| 235 | MT_TRACE_LOG (pCtx, WELS_LOG_DEBUG, "[MT] DynamicAdjustSlicing(), iDid= %d, iCountNumMb= %d\n", iCurDid, kiCountNumMb); | 235 | MT_TRACE_LOG (pCtx, WELS_LOG_DEBUG, "[MT] DynamicAdjustSlicing(), iDid= %d, iCountNumMb= %d", iCurDid, kiCountNumMb); |
| 236 | 236 | ||
| 237 | iSliceIdx = 0; | 237 | iSliceIdx = 0; |
| 238 | while (iSliceIdx + 1 < kiCountSliceNum) { | 238 | while (iSliceIdx + 1 < kiCountSliceNum) { |
| @@ -258,7 +258,7 @@ void DynamicAdjustSlicing (sWelsEncCtx* pCtx, · 19 unmodified lines | |||
| 258 | } | 258 | } |
| 259 | iRunLen[iSliceIdx] = iNumMbAssigning; | 259 | iRunLen[iSliceIdx] = iNumMbAssigning; |
| 260 | MT_TRACE_LOG (pCtx, WELS_LOG_DEBUG, | 260 | MT_TRACE_LOG (pCtx, WELS_LOG_DEBUG, |
| 261 | "[MT] DynamicAdjustSlicing(), uiSliceIdx= %d, pSliceComplexRatio= %.2f, slice_run_org= %d, slice_run_adj= %d\n", | 261 | "[MT] DynamicAdjustSlicing(), uiSliceIdx= %d, pSliceComplexRatio= %.2f, slice_run_org= %d, slice_run_adj= %d", |
| 262 | iSliceIdx, pSliceComplexRatio[iSliceIdx] * 1.0f / INT_MULTIPLY, pSliceCtx->pCountMbNumInSlice[iSliceIdx], | 262 | iSliceIdx, pSliceComplexRatio[iSliceIdx] * 1.0f / INT_MULTIPLY, pSliceCtx->pCountMbNumInSlice[iSliceIdx], |
| 263 | iNumMbAssigning); | 263 | iNumMbAssigning); |
| 264 | ++ iSliceIdx; | 264 | ++ iSliceIdx; |
| @@ -266,7 +266,7 @@ void DynamicAdjustSlicing (sWelsEncCtx* pCtx, · 1 unmodified line | |||
| 266 | } | 266 | } |
| 267 | iRunLen[iSliceIdx] = iMbNumLeft; | 267 | iRunLen[iSliceIdx] = iMbNumLeft; |
| 268 | MT_TRACE_LOG (pCtx, WELS_LOG_DEBUG, | 268 | MT_TRACE_LOG (pCtx, WELS_LOG_DEBUG, |
| 269 | "[MT] DynamicAdjustSlicing(), iSliceIdx= %d, pSliceComplexRatio= %.2f, slice_run_org= %d, slice_run_adj= %d\n", | 269 | "[MT] DynamicAdjustSlicing(), iSliceIdx= %d, pSliceComplexRatio= %.2f, slice_run_org= %d, slice_run_adj= %d", |
| 270 | iSliceIdx, pSliceComplexRatio[iSliceIdx] * 1.0f / INT_MULTIPLY, pSliceCtx->pCountMbNumInSlice[iSliceIdx], iMbNumLeft); | 270 | iSliceIdx, pSliceComplexRatio[iSliceIdx] * 1.0f / INT_MULTIPLY, pSliceCtx->pCountMbNumInSlice[iSliceIdx], iMbNumLeft); |
| 271 | 271 | ||
| 272 | 272 | ||
| @@ -351,7 +351,7 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 78 unmodified lines | |||
| 351 | pSmt->pFSliceDiff = fopen ("slice_time.txt", "wt+"); | 351 | pSmt->pFSliceDiff = fopen ("slice_time.txt", "wt+"); |
| 352 | #endif//MT_DEBUG | 352 | #endif//MT_DEBUG |
| 353 | 353 | ||
| 354 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "encpEncCtx= 0x%p\n", (void*) *ppCtx); | 354 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "encpEncCtx= 0x%p", (void*) *ppCtx); |
| 355 | 355 | ||
| 356 | char name[SEM_NAME_MAX] = {0}; | 356 | char name[SEM_NAME_MAX] = {0}; |
| 357 | WELS_GCC_UNUSED WELS_THREAD_ERROR_CODE err = 0; | 357 | WELS_GCC_UNUSED WELS_THREAD_ERROR_CODE err = 0; |
| @@ -365,24 +365,24 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 7 unmodified lines | |||
| 365 | 365 | ||
| 366 | WelsSnprintf (name, SEM_NAME_MAX, "ee%d%s", iIdx, pSmt->eventNamespace); | 366 | WelsSnprintf (name, SEM_NAME_MAX, "ee%d%s", iIdx, pSmt->eventNamespace); |
| 367 | err = WelsEventOpen (&pSmt->pExitEncodeEvent[iIdx], name); | 367 | err = WelsEventOpen (&pSmt->pExitEncodeEvent[iIdx], name); |
| 368 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pExitEncodeEvent%d named(%s) ret%d err%d\n", iIdx, name, err, errno); | 368 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pExitEncodeEvent%d named(%s) ret%d err%d", iIdx, name, err, errno); |
| 369 | WelsSnprintf (name, SEM_NAME_MAX, "tm%d%s", iIdx, pSmt->eventNamespace); | 369 | WelsSnprintf (name, SEM_NAME_MAX, "tm%d%s", iIdx, pSmt->eventNamespace); |
| 370 | err = WelsEventOpen (&pSmt->pThreadMasterEvent[iIdx], name); | 370 | err = WelsEventOpen (&pSmt->pThreadMasterEvent[iIdx], name); |
| 371 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pThreadMasterEvent%d named(%s) ret%d err%d\n", iIdx, name, err, errno); | 371 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pThreadMasterEvent%d named(%s) ret%d err%d", iIdx, name, err, errno); |
| 372 | // length of semaphore name should be system constrained at least on mac 10.7 | 372 | // length of semaphore name should be system constrained at least on mac 10.7 |
| 373 | WelsSnprintf (name, SEM_NAME_MAX, "ud%d%s", iIdx, pSmt->eventNamespace); | 373 | WelsSnprintf (name, SEM_NAME_MAX, "ud%d%s", iIdx, pSmt->eventNamespace); |
| 374 | err = WelsEventOpen (&pSmt->pUpdateMbListEvent[iIdx], name); | 374 | err = WelsEventOpen (&pSmt->pUpdateMbListEvent[iIdx], name); |
| 375 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pUpdateMbListEvent%d named(%s) ret%d err%d\n", iIdx, name, err, errno); | 375 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pUpdateMbListEvent%d named(%s) ret%d err%d", iIdx, name, err, errno); |
| 376 | WelsSnprintf (name, SEM_NAME_MAX, "fu%d%s", iIdx, pSmt->eventNamespace); | 376 | WelsSnprintf (name, SEM_NAME_MAX, "fu%d%s", iIdx, pSmt->eventNamespace); |
| 377 | err = WelsEventOpen (&pSmt->pFinUpdateMbListEvent[iIdx], name); | 377 | err = WelsEventOpen (&pSmt->pFinUpdateMbListEvent[iIdx], name); |
| 378 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pFinUpdateMbListEvent%d named(%s) ret%d err%d\n", iIdx, name, err, | 378 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pFinUpdateMbListEvent%d named(%s) ret%d err%d", iIdx, name, err, |
| 379 | errno); | 379 | errno); |
| 380 | WelsSnprintf (name, SEM_NAME_MAX, "sc%d%s", iIdx, pSmt->eventNamespace); | 380 | WelsSnprintf (name, SEM_NAME_MAX, "sc%d%s", iIdx, pSmt->eventNamespace); |
| 381 | err = WelsEventOpen (&pSmt->pSliceCodedEvent[iIdx], name); | 381 | err = WelsEventOpen (&pSmt->pSliceCodedEvent[iIdx], name); |
| 382 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pSliceCodedEvent%d named(%s) ret%d err%d\n", iIdx, name, err, errno); | 382 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pSliceCodedEvent%d named(%s) ret%d err%d", iIdx, name, err, errno); |
| 383 | WelsSnprintf (name, SEM_NAME_MAX, "rc%d%s", iIdx, pSmt->eventNamespace); | 383 | WelsSnprintf (name, SEM_NAME_MAX, "rc%d%s", iIdx, pSmt->eventNamespace); |
| 384 | err = WelsEventOpen (&pSmt->pReadySliceCodingEvent[iIdx], name); | 384 | err = WelsEventOpen (&pSmt->pReadySliceCodingEvent[iIdx], name); |
| 385 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pReadySliceCodingEvent%d = 0x%p named(%s) ret%d err%d\n", iIdx, | 385 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pReadySliceCodingEvent%d = 0x%p named(%s) ret%d err%d", iIdx, |
| 386 | (void*)pSmt->pReadySliceCodingEvent[iIdx], name, err, errno); | 386 | (void*)pSmt->pReadySliceCodingEvent[iIdx], name, err, errno); |
| 387 | 387 | ||
| 388 | ++ iIdx; | 388 | ++ iIdx; |
| @@ -390,7 +390,7 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 1 unmodified line | |||
| 390 | 390 | ||
| 391 | WelsSnprintf (name, SEM_NAME_MAX, "scm%s", pSmt->eventNamespace); | 391 | WelsSnprintf (name, SEM_NAME_MAX, "scm%s", pSmt->eventNamespace); |
| 392 | err = WelsEventOpen (&pSmt->pSliceCodedMasterEvent, name); | 392 | err = WelsEventOpen (&pSmt->pSliceCodedMasterEvent, name); |
| 393 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pSliceCodedMasterEvent named(%s) ret%d err%d\n", name, err, errno); | 393 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "[MT] Open pSliceCodedMasterEvent named(%s) ret%d err%d", name, err, errno); |
| 394 | 394 | ||
| 395 | (*ppCtx)->pSliceBs = (SWelsSliceBs*)pMa->WelsMalloc (sizeof (SWelsSliceBs) * iMaxSliceNum, "pSliceBs"); | 395 | (*ppCtx)->pSliceBs = (SWelsSliceBs*)pMa->WelsMalloc (sizeof (SWelsSliceBs) * iMaxSliceNum, "pSliceBs"); |
| 396 | WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pSliceBs), FreeMemorySvc (ppCtx)) | 396 | WELS_VERIFY_RETURN_PROC_IF (1, (NULL == (*ppCtx)->pSliceBs), FreeMemorySvc (ppCtx)) |
| @@ -423,7 +423,7 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 26 unmodified lines | |||
| 423 | iReturn = WelsMutexInit (& (*ppCtx)->mutexEncoderError); | 423 | iReturn = WelsMutexInit (& (*ppCtx)->mutexEncoderError); |
| 424 | WELS_VERIFY_RETURN_PROC_IF (1, (WELS_THREAD_ERROR_OK != iReturn), FreeMemorySvc (ppCtx)) | 424 | WELS_VERIFY_RETURN_PROC_IF (1, (WELS_THREAD_ERROR_OK != iReturn), FreeMemorySvc (ppCtx)) |
| 425 | 425 | ||
| 426 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "RequestMtResource(), iThreadNum=%d, iCountSliceNum= %d\n", | 426 | MT_TRACE_LOG (*ppCtx, WELS_LOG_INFO, "RequestMtResource(), iThreadNum=%d, iCountSliceNum= %d", |
| 427 | pPara->iCountThreadsNum, | 427 | pPara->iCountThreadsNum, |
| 428 | iMaxSliceNum); | 428 | iMaxSliceNum); |
| 429 | 429 | ||
| @@ -707,7 +707,7 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 277 unmodified lines | |||
| 707 | 707 | ||
| 708 | do { | 708 | do { |
| 709 | MT_TRACE_LOG (pEncPEncCtx, WELS_LOG_INFO, | 709 | MT_TRACE_LOG (pEncPEncCtx, WELS_LOG_INFO, |
| 710 | "[MT] CodingSliceThreadProc(), try to call WelsMultipleEventsWaitSingleBlocking(pEventsList= %p %p %p), pEncPEncCtx= %p!\n", | 710 | "[MT] CodingSliceThreadProc(), try to call WelsMultipleEventsWaitSingleBlocking(pEventsList= %p %p %p), pEncPEncCtx= %p!", |
| 711 | pEventsList[0], pEventsList[1], pEventsList[1], (void*)pEncPEncCtx); | 711 | pEventsList[0], pEventsList[1], pEventsList[1], (void*)pEncPEncCtx); |
| 712 | iWaitRet = WelsMultipleEventsWaitSingleBlocking (iEventCount, | 712 | iWaitRet = WelsMultipleEventsWaitSingleBlocking (iEventCount, |
| 713 | &pEventsList[0], | 713 | &pEventsList[0], |
| @@ -799,7 +799,7 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 85 unmodified lines | |||
| 799 | pEncPEncCtx->pSliceThreading->pSliceConsumeTime[pEncPEncCtx->uiDependencyId][iSliceIdx] = (uint32_t) ( | 799 | pEncPEncCtx->pSliceThreading->pSliceConsumeTime[pEncPEncCtx->uiDependencyId][iSliceIdx] = (uint32_t) ( |
| 800 | WelsTime() - iSliceStart); | 800 | WelsTime() - iSliceStart); |
| 801 | MT_TRACE_LOG (pEncPEncCtx, WELS_LOG_INFO, | 801 | MT_TRACE_LOG (pEncPEncCtx, WELS_LOG_INFO, |
| 802 | "[MT] CodingSliceThreadProc(), coding_idx %d, uiSliceIdx %d, pSliceConsumeTime %d, iSliceSize %d, pFirstMbInSlice %d, count_num_mb_in_slice %d\n", | 802 | "[MT] CodingSliceThreadProc(), coding_idx %d, uiSliceIdx %d, pSliceConsumeTime %d, iSliceSize %d, pFirstMbInSlice %d, count_num_mb_in_slice %d", |
| 803 | pEncPEncCtx->iCodingIndex, iSliceIdx, | 803 | pEncPEncCtx->iCodingIndex, iSliceIdx, |
| 804 | pEncPEncCtx->pSliceThreading->pSliceConsumeTime[pEncPEncCtx->uiDependencyId][iSliceIdx], iSliceSize, | 804 | pEncPEncCtx->pSliceThreading->pSliceConsumeTime[pEncPEncCtx->uiDependencyId][iSliceIdx], iSliceSize, |
| 805 | pCurDq->pSliceEncCtx->pFirstMbInSlice[iSliceIdx], pCurDq->pSliceEncCtx->pCountMbNumInSlice[iSliceIdx]); | 805 | pCurDq->pSliceEncCtx->pFirstMbInSlice[iSliceIdx], pCurDq->pSliceEncCtx->pCountMbNumInSlice[iSliceIdx]); |
| @@ -941,7 +941,7 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 135 unmodified lines | |||
| 941 | &pEncPEncCtx->pSliceThreading->pFinUpdateMbListEvent[iEventIdx]); // mean finished update pMb list for this pSlice | 941 | &pEncPEncCtx->pSliceThreading->pFinUpdateMbListEvent[iEventIdx]); // mean finished update pMb list for this pSlice |
| 942 | } else { // WELS_THREAD_ERROR_WAIT_TIMEOUT, or WELS_THREAD_ERROR_WAIT_FAILED | 942 | } else { // WELS_THREAD_ERROR_WAIT_TIMEOUT, or WELS_THREAD_ERROR_WAIT_FAILED |
| 943 | WelsLog (& (pEncPEncCtx->sLogCtx), WELS_LOG_WARNING, | 943 | WelsLog (& (pEncPEncCtx->sLogCtx), WELS_LOG_WARNING, |
| 944 | "[MT] CodingSliceThreadProc(), waiting pReadySliceCodingEvent[%d] failed(%d) and thread%d terminated!\n", iEventIdx, | 944 | "[MT] CodingSliceThreadProc(), waiting pReadySliceCodingEvent[%d] failed(%d) and thread%d terminated!", iEventIdx, |
| 945 | iWaitRet, iThreadIdx); | 945 | iWaitRet, iThreadIdx); |
| 946 | uiThrdRet = 1; | 946 | uiThrdRet = 1; |
| 947 | break; | 947 | break; |
| @@ -966,7 +966,7 @@ int32_t CreateSliceThreads (sWelsEncCtx* pCtx) { · 18 unmodified lines | |||
| 966 | 966 | ||
| 967 | ++ iIdx; | 967 | ++ iIdx; |
| 968 | } | 968 | } |
| 969 | MT_TRACE_LOG (pCtx, WELS_LOG_INFO, "CreateSliceThreads() exit..\n"); | 969 | MT_TRACE_LOG (pCtx, WELS_LOG_INFO, "CreateSliceThreads() exit.."); |
| 970 | return 0; | 970 | return 0; |
| 971 | } | 971 | } |
| 972 | 972 | ||
| @@ -979,7 +979,7 @@ int32_t FiredSliceThreads (sWelsEncCtx* pCtx, SSliceThreadPrivateData* pPriData, · 6 unmodified lines | |||
| 979 | 979 | ||
| 980 | if (pPriData == NULL || pLbi == NULL || kiEventCnt <= 0 || pEventsList == NULL) { | 980 | if (pPriData == NULL || pLbi == NULL || kiEventCnt <= 0 || pEventsList == NULL) { |
| 981 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, | 981 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR, |
| 982 | "FiredSliceThreads(), fail due pPriData == %p || pLbi == %p || iEventCnt(%d) <= 0 || pEventsList == %p!!\n", | 982 | "FiredSliceThreads(), fail due pPriData == %p || pLbi == %p || iEventCnt(%d) <= 0 || pEventsList == %p!!", |
| 983 | (void*)pPriData, (void*)pLbi, uiNumThreads, (void*)pEventsList); | 983 | (void*)pPriData, (void*)pLbi, uiNumThreads, (void*)pEventsList); |
| 984 | return 1; | 984 | return 1; |
| 985 | } | 985 | } |