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
137 }137 }
138}138}
139 139
140
141void 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
140/* count MB types if enabled FRAME_INFO_OUTPUT*/178/* count MB types if enabled FRAME_INFO_OUTPUT*/
141#if defined(MB_TYPES_CHECK)179#if defined(MB_TYPES_CHECK)
142void WelsCountMbType (int32_t (*iMbCount)[18], const EWelsSliceType keSt, const SMB* kpMb) {180void WelsCountMbType (int32_t (*iMbCount)[18], const EWelsSliceType keSt, const SMB* kpMb) {
@@ -772,42 +810,7 @@ void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq, · 629 unmodified lines
772 SMB* pMb = &pMbList[iIdx];810 SMB* pMb = &pMbList[iIdx];
773 811
774 do {812 do {
775 uint32_t uiNeighborAvailFlag = 0;813 UpdateMbNeighbor(pCurDq, pMb, kiMbWidth, WelsMbToSliceIdc (pCurDq, pMb->iMbXY));
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
811 ++ pMb;814 ++ pMb;
812 ++ iIdx;815 ++ iIdx;
813 } while ((iIdx < kiEndMbNeedUpdate) &&816 } 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