History

refactor for slice buffer init/allocate/free

huade committed 10 years ago

Commit a7a5b7b1 parent 33bb96f7 files · +334 −158Browse files

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

Unified · Split

codec/encoder/core/src/slice_multi_threading.cpp+1−21
@@ -271,6 +271,7 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 270 unmodified lines
271271
272272 assert (iThreadNum > 0);
273273 iMaxSliceNumInThread = ((*ppCtx)->iMaxSliceCount / iThreadNum + 1) * 2;
274+ iMaxSliceNumInThread = WELS_MIN ((*ppCtx)->iMaxSliceCount, (int) iMaxSliceNumInThread);
274275
275276 pSmt = (SSliceThreading*)pMa->WelsMalloc (sizeof (SSliceThreading), "SSliceThreading");
276277 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == pSmt), FreeMemorySvc (ppCtx))
@@ -307,8 +308,6 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 30 unmodified lines
307308 pSmt->pThreadPEncCtx[iIdx].pWelsPEncCtx = (void*) *ppCtx;
308309 pSmt->pThreadPEncCtx[iIdx].iSliceIndex = iIdx;
309310 pSmt->pThreadPEncCtx[iIdx].iThreadIndex = iIdx;
310− pSmt->iMaxSliceNumInThread[iIdx] = iMaxSliceNumInThread;
311− pSmt->iEncodedSliceNumInThread[iIdx] = 0;
312311 pSmt->pThreadHandles[iIdx] = 0;
313312
314313 WelsSnprintf (name, SEM_NAME_MAX, "ee%d%s", iIdx, pSmt->eventNamespace);
@@ -332,19 +331,10 @@ int32_t RequestMtResource (sWelsEncCtx** ppCtx, SWelsSvcCodingParam* pCodingPara · 17 unmodified lines
332331 err = WelsEventOpen (&pSmt->pReadySliceCodingEvent[iIdx], name);
333332 MT_TRACE_LOG (pLogCtx, WELS_LOG_INFO, "[MT] Open pReadySliceCodingEvent%d = 0x%p named(%s) ret%d err%d", iIdx,
334333 (void*)pSmt->pReadySliceCodingEvent[iIdx], name, err, errno);
335−
336− pSmt->pSliceInThread[iIdx] = (SSlice*)pMa->WelsMalloc (sizeof (SSlice)*iMaxSliceNumInThread, "pSmt->pSliceInThread");
337− WELS_VERIFY_RETURN_PROC_IF (1, (NULL == pSmt->pSliceInThread[iIdx]), FreeMemorySvc (ppCtx))
338−
339− pSmt->piSliceIndexInThread[iIdx] = (int32_t *)pMa->WelsMalloc (iMaxSliceNumInThread, "pSmt->piSliceIndexInThread");
340− WELS_VERIFY_RETURN_PROC_IF (1, (NULL == pSmt->piSliceIndexInThread[iIdx]), FreeMemorySvc (ppCtx))
341−
342334 ++ iIdx;
343335 }
344336 for (; iIdx < MAX_THREADS_NUM; iIdx++) {
345337 pSmt->pThreadBsBuffer[iIdx] = NULL;
346− pSmt->pSliceInThread[iIdx] = NULL;
347− pSmt->piSliceIndexInThread[iIdx] = NULL;
348338 }
349339
350340 WelsSnprintf (name, SEM_NAME_MAX, "scm%s", pSmt->eventNamespace);
@@ -432,16 +422,6 @@ void ReleaseMtResource (sWelsEncCtx** ppCtx) { · 81 unmodified lines
432422 pMa->WelsFree (pSmt->pThreadBsBuffer[i], "pSmt->pThreadBsBuffer");
433423 pSmt->pThreadBsBuffer[i] = NULL;
434424 }
435−
436− if (pSmt->pSliceInThread[i]) {
437− pMa->WelsFree (pSmt->pSliceInThread[i], "pSmt->pSliceInThread");
438− pSmt->pSliceInThread[i] = NULL;
439− }
440−
441− if (pSmt->piSliceIndexInThread[i]) {
442− pMa->WelsFree (pSmt->piSliceIndexInThread[i], "pSmt->piSliceIndexInThread");
443− pSmt->piSliceIndexInThread[i] = NULL;
444− }
445425 }
446426 memset (&pSmt->bThreadBsBufferUsage, 0, MAX_THREADS_NUM * sizeof (bool));
447427

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