History

refact WriteSliceBs()

huade committed 10 years ago

Commit 4a4ade11 parent a4221804 files · +18 −36Browse files

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

Unified · Split

codec/encoder/core/src/slice_multi_threading.cpp+14−24
@@ -628,31 +628,30 @@ int32_t AppendSliceToFrameBs (sWelsEncCtx* pCtx, SLayerBSInfo* pLbi, const int32 · 627 unmodified lines
628628 return iLayerSize;
629629 }
630630
631−int32_t WriteSliceBs (sWelsEncCtx* pCtx, uint8_t* pDst,
632− int32_t* pNalLen,
633− int32_t iTotalLeftLength,
634− const int32_t iSliceIdx,
635− int32_t& iSliceSize) {
636− SWelsSliceBs* pSliceBs = &pCtx->pSliceBs[iSliceIdx];
637− SNalUnitHeaderExt* pNalHdrExt = &pCtx->pCurDqLayer->sLayerInfo.sNalHeaderExt;
638−
631+int32_t WriteSliceBs (sWelsEncCtx* pCtx,SWelsSliceBs* pSliceBs,const int32_t iSliceIdx,int32_t& iSliceSize) {
639632 const int32_t kiNalCnt = pSliceBs->iNalIndex;
640633 int32_t iNalIdx = 0;
641634 int32_t iNalSize = 0;
642− int32_t iReturn = ENC_RETURN_SUCCESS;
643− iSliceSize = 0;
635+ int32_t iReturn = ENC_RETURN_SUCCESS;
636+ int32_t iTotalLeftLength = (iSliceIdx > 0) ? (pSliceBs->uiSize - pSliceBs->uiBsPos)
637+ : (pCtx->iFrameBsSize - pCtx->iPosBsBuffer);
638+ SNalUnitHeaderExt* pNalHdrExt = &pCtx->pCurDqLayer->sLayerInfo.sNalHeaderExt;
639+ uint8_t* pDst = pSliceBs->pBs;
640+
644641 assert (kiNalCnt <= 2);
645642 if (kiNalCnt > 2)
646643 return 0;
647644
645+ iSliceSize = 0;
648646 while (iNalIdx < kiNalCnt) {
649647 iNalSize = 0;
650648 iReturn = WelsEncodeNal (&pSliceBs->sNalList[iNalIdx], pNalHdrExt, iTotalLeftLength - iSliceSize,
651649 pDst, &iNalSize);
652650 WELS_VERIFY_RETURN_IFNEQ (iReturn, ENC_RETURN_SUCCESS)
653− pNalLen[iNalIdx] = iNalSize;
654− iSliceSize += iNalSize;
655− pDst += iNalSize;
651+
652+ pSliceBs->iNalLen[iNalIdx] = iNalSize;
653+ iSliceSize += iNalSize;
654+ pDst += iNalSize;
656655 ++ iNalIdx;
657656 }
658657 pSliceBs->uiBsPos = iSliceSize;
@@ -761,13 +760,7 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 102 unmodified lines
761760
762761 WelsUnloadNalForSlice (pSliceBs);
763762
764− int32_t iLeftBufferSize = (iSliceIdx > 0) ?
765− (pSliceBs->uiSize - pSliceBs->uiBsPos)
766− : (pEncPEncCtx->iFrameBsSize - pEncPEncCtx->iPosBsBuffer);
767− iReturn = WriteSliceBs (pEncPEncCtx, pSliceBs->pBs,
768− &pSliceBs->iNalLen[0],
769− iLeftBufferSize,
770− iSliceIdx, iSliceSize);
763+ iReturn = WriteSliceBs (pEncPEncCtx, pSliceBs, iSliceIdx, iSliceSize);
771764 if (ENC_RETURN_SUCCESS != iReturn) {
772765 uiThrdRet = iReturn;
773766 WELS_THREAD_SIGNAL_AND_BREAK (pEncPEncCtx->pSliceThreading->pSliceCodedEvent,
@@ -869,10 +862,7 @@ WELS_THREAD_ROUTINE_TYPE CodingSliceThreadProc (void* arg) { · 95 unmodified lines
869862
870863 WelsUnloadNalForSlice (pSliceBs);
871864
872− int32_t iLeftBufferSize = (iSliceIdx > 0) ? (pSliceBs->uiSize - pSliceBs->uiBsPos) : (pEncPEncCtx->iFrameBsSize - pEncPEncCtx->iPosBsBuffer);
873− iReturn = WriteSliceBs (pEncPEncCtx, pSliceBs->pBs, &pSliceBs->iNalLen[0],
874− iLeftBufferSize,
875− iSliceIdx, iSliceSize);
865+ iReturn = WriteSliceBs (pEncPEncCtx, pSliceBs, iSliceIdx, iSliceSize);
876866 if (ENC_RETURN_SUCCESS != iReturn) {
877867 uiThrdRet = iReturn;
878868 WELS_THREAD_SIGNAL_AND_BREAK (pEncPEncCtx->pSliceThreading->pSliceCodedEvent,

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