History

put duplicated codes into one function

sijchen committed 10 years ago

Commit 2fc9c081 parent 01016b14 files · +42 −110Browse files

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

Unified · Split

codec/encoder/core/src/svc_encode_slice.cpp+39−36
@@ -137,6 +137,44 @@ void WelsSliceHeaderExtInit (sWelsEncCtx* pEncCtx, SDqLayer* pCurLayer, SSlice* · 136 unmodified lines
137137 }
138138 }
139139
140+
141+void UpdateMbNeighbor(SDqLayer* pCurDq, SMB* pMb, const int32_t kiMbWidth, uint16_t uiSliceIdc) {
142+ uint32_t uiNeighborAvailFlag = 0;
143+ const int32_t kiMbXY = pMb->iMbXY;
144+ const int32_t kiMbX = pMb->iMbX;
145+ const int32_t kiMbY = pMb->iMbY;
146+ bool bLeft;
147+ bool bTop;
148+ bool bLeftTop;
149+ bool bRightTop;
150+ int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;
151+
152+ pMb->uiSliceIdc = uiSliceIdc;
153+ iLeftXY = kiMbXY - 1;
154+ iTopXY = kiMbXY - kiMbWidth;
155+ iLeftTopXY = iTopXY - 1;
156+ iRightTopXY = iTopXY + 1;
157+
158+ bLeft = (kiMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY));
159+ bTop = (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY));
160+ bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY));
161+ bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY));
162+
163+ if (bLeft) {
164+ uiNeighborAvailFlag |= LEFT_MB_POS;
165+ }
166+ if (bTop) {
167+ uiNeighborAvailFlag |= TOP_MB_POS;
168+ }
169+ if (bLeftTop) {
170+ uiNeighborAvailFlag |= TOPLEFT_MB_POS;
171+ }
172+ if (bRightTop) {
173+ uiNeighborAvailFlag |= TOPRIGHT_MB_POS;
174+ }
175+ pMb->uiNeighborAvail = (uint8_t)uiNeighborAvailFlag;
176+}
177+
140178 /* count MB types if enabled FRAME_INFO_OUTPUT*/
141179 #if defined(MB_TYPES_CHECK)
142180 void WelsCountMbType (int32_t (*iMbCount)[18], const EWelsSliceType keSt, const SMB* kpMb) {
@@ -772,42 +810,7 @@ void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq, · 629 unmodified lines
772810 SMB* pMb = &pMbList[iIdx];
773811
774812 do {
775− uint32_t uiNeighborAvailFlag = 0;
776− const int32_t kiMbXY = pMb->iMbXY;
777− const int32_t kiMbX = pMb->iMbX;
778− const int32_t kiMbY = pMb->iMbY;
779− bool bLeft;
780− bool bTop;
781− bool bLeftTop;
782− bool bRightTop;
783− int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;
784− const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pCurDq, kiMbXY);
785−
786− pMb->uiSliceIdc = kuiSliceIdc;
787− iLeftXY = kiMbXY - 1;
788− iTopXY = kiMbXY - kiMbWidth;
789− iLeftTopXY = iTopXY - 1;
790− iRightTopXY = iTopXY + 1;
791−
792− bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY));
793− bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY));
794− bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY));
795− bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY));
796−
797− if (bLeft) {
798− uiNeighborAvailFlag |= LEFT_MB_POS;
799− }
800− if (bTop) {
801− uiNeighborAvailFlag |= TOP_MB_POS;
802− }
803− if (bLeftTop) {
804− uiNeighborAvailFlag |= TOPLEFT_MB_POS;
805− }
806− if (bRightTop) {
807− uiNeighborAvailFlag |= TOPRIGHT_MB_POS;
808− }
809− pMb->uiNeighborAvail = (uint8_t)uiNeighborAvailFlag;
810−
813+ UpdateMbNeighbor(pCurDq, pMb, kiMbWidth, WelsMbToSliceIdc (pCurDq, pMb->iMbXY));
811814 ++ pMb;
812815 ++ iIdx;
813816 } while ((iIdx < kiEndMbNeedUpdate) &&

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