History

make the decoder compile and run with treason

Sigrid Solveig Haflínudóttir committed 5 years ago

Commit 37423d41 parent be8e62f71 files · +961 −1217Browse files

Showing the changes to codec/decoder/core/src/cabac_decoder.cpp (1 of 71 files). Show all

Unified · Split

codec/decoder/core/src/cabac_decoder.cpp+57−57
@@ -31,7 +31,7 @@ · 30 unmodified lines
3131 * cabac_decoder.cpp: deals with cabac state transition and related functions
3232 */
3333 #include "cabac_decoder.h"
34−namespace WelsDec {
34+
3535 static const int16_t g_kMvdBinPos2Ctx [8] = {0, 1, 2, 3, 3, 3, 3, 3};
3636
3737 void WelsCabacGlobalInit (PWelsDecoderContext pCtx) {
@@ -41,8 +41,8 @@ void WelsCabacGlobalInit (PWelsDecoderContext pCtx) { · 3 unmodified lines
4141 int32_t m = g_kiCabacGlobalContextIdx[iIdx][iModel][0];
4242 int32_t n = g_kiCabacGlobalContextIdx[iIdx][iModel][1];
4343 int32_t iPreCtxState = WELS_CLIP3 ((((m * iQp) >> 4) + n), 1, 126);
44− uint8_t uiValMps = 0;
45− uint8_t uiStateIdx = 0;
44+ uint8_t uiValMps;
45+ uint8_t uiStateIdx;
4646 if (iPreCtxState <= 63) {
4747 uiStateIdx = 63 - iPreCtxState;
4848 uiValMps = 0;
@@ -59,7 +59,8 @@ void WelsCabacGlobalInit (PWelsDecoderContext pCtx) { · 10 unmodified lines
5959
6060 // ------------------- 1. context initialization
6161 void WelsCabacContextInit (PWelsDecoderContext pCtx, uint8_t eSliceType, int32_t iCabacInitIdc, int32_t iQp) {
62− int32_t iIdx = pCtx->eSliceType == WelsCommon::I_SLICE ? 0 : iCabacInitIdc + 1;
62+ int32_t iIdx = pCtx->eSliceType == I_SLICE ? 0 : iCabacInitIdc + 1;
63+ (void)eSliceType;
6364 if (!pCtx->bCabacInited) {
6465 WelsCabacGlobalInit (pCtx);
6566 }
@@ -102,43 +103,43 @@ void RestoreCabacDecEngineToBS (PWelsCabacDecEngine pDecEngine, PBitStringAux pB · 36 unmodified lines
102103 }
103104
104105 // ------------------- 3. actual decoding
105−int32_t Read32BitsCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiValue, int32_t& iNumBitsRead) {
106+int32_t Read32BitsCabac (PWelsCabacDecEngine pDecEngine, uint32_t *uiValue, int32_t *iNumBitsRead) {
106107 intX_t iLeftBytes = pDecEngine->pBuffEnd - pDecEngine->pBuffCurr;
107− iNumBitsRead = 0;
108− uiValue = 0;
108+ *iNumBitsRead = 0;
109+ *uiValue = 0;
109110 if (iLeftBytes <= 0) {
110111 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_CABAC_NO_BS_TO_READ);
111112 }
112113 switch (iLeftBytes) {
113114 case 3:
114− uiValue = ((pDecEngine->pBuffCurr[0]) << 16 | (pDecEngine->pBuffCurr[1]) << 8 | (pDecEngine->pBuffCurr[2]));
115+ *uiValue = ((pDecEngine->pBuffCurr[0]) << 16 | (pDecEngine->pBuffCurr[1]) << 8 | (pDecEngine->pBuffCurr[2]));
115116 pDecEngine->pBuffCurr += 3;
116− iNumBitsRead = 24;
117+ *iNumBitsRead = 24;
117118 break;
118119 case 2:
119− uiValue = ((pDecEngine->pBuffCurr[0]) << 8 | (pDecEngine->pBuffCurr[1]));
120+ *uiValue = ((pDecEngine->pBuffCurr[0]) << 8 | (pDecEngine->pBuffCurr[1]));
120121 pDecEngine->pBuffCurr += 2;
121− iNumBitsRead = 16;
122+ *iNumBitsRead = 16;
122123 break;
123124 case 1:
124− uiValue = pDecEngine->pBuffCurr[0];
125+ *uiValue = pDecEngine->pBuffCurr[0];
125126 pDecEngine->pBuffCurr += 1;
126− iNumBitsRead = 8;
127+ *iNumBitsRead = 8;
127128 break;
128129 default:
129− uiValue = ((pDecEngine->pBuffCurr[0] << 24) | (pDecEngine->pBuffCurr[1]) << 16 | (pDecEngine->pBuffCurr[2]) << 8 |
130+ *uiValue = ((pDecEngine->pBuffCurr[0] << 24) | (pDecEngine->pBuffCurr[1]) << 16 | (pDecEngine->pBuffCurr[2]) << 8 |
130131 (pDecEngine->pBuffCurr[3]));
131132 pDecEngine->pBuffCurr += 4;
132− iNumBitsRead = 32;
133+ *iNumBitsRead = 32;
133134 break;
134135 }
135136 return ERR_NONE;
136137 }
137138
138−int32_t DecodeBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, uint32_t& uiBinVal) {
139− int32_t iErrorInfo = ERR_NONE;
139+int32_t DecodeBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, uint32_t *uiBinVal) {
140+ int32_t iErrorInfo;
140141 uint32_t uiState = pBinCtx->uiState;
141− uiBinVal = pBinCtx->uiMPS;
142+ *uiBinVal = pBinCtx->uiMPS;
142143 uint64_t uiOffset = pDecEngine->uiOffset;
143144 uint64_t uiRange = pDecEngine->uiRange;
144145
@@ -147,7 +148,7 @@ int32_t DecodeBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, u · 2 unmodified lines
147148 uiRange -= uiRangeLPS;
148149 if (uiOffset >= (uiRange << pDecEngine->iBitsLeft)) { //LPS
149150 uiOffset -= (uiRange << pDecEngine->iBitsLeft);
150− uiBinVal ^= 0x0001;
151+ *uiBinVal ^= 0x0001;
151152 if (!uiState)
152153 pBinCtx->uiMPS ^= 0x01;
153154 pBinCtx->uiState = g_kuiStateTransTable[uiState][0];
@@ -171,7 +172,7 @@ int32_t DecodeBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, u · 17 unmodified lines
171172 }
172173 uint32_t uiVal = 0;
173174 int32_t iNumBitsRead = 0;
174− iErrorInfo = Read32BitsCabac (pDecEngine, uiVal, iNumBitsRead);
175+ iErrorInfo = Read32BitsCabac (pDecEngine, &uiVal, &iNumBitsRead);
175176 pDecEngine->uiOffset = (uiOffset << iNumBitsRead) | uiVal;
176177 pDecEngine->iBitsLeft += iNumBitsRead;
177178 if (iErrorInfo && pDecEngine->iBitsLeft < 0) {
@@ -180,8 +181,8 @@ int32_t DecodeBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, u · 2 unmodified lines
180181 return ERR_NONE;
181182 }
182183
183−int32_t DecodeBypassCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal) {
184− int32_t iErrorInfo = ERR_NONE;
184+int32_t DecodeBypassCabac (PWelsCabacDecEngine pDecEngine, uint32_t *uiBinVal) {
185+ int32_t iErrorInfo;
185186 int32_t iBitsLeft = pDecEngine->iBitsLeft;
186187 uint64_t uiOffset = pDecEngine->uiOffset;
187188 uint64_t uiRangeValue;
@@ -190,7 +191,7 @@ int32_t DecodeBypassCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal) { · 2 unmodified lines
190191 if (iBitsLeft <= 0) {
191192 uint32_t uiVal = 0;
192193 int32_t iNumBitsRead = 0;
193− iErrorInfo = Read32BitsCabac (pDecEngine, uiVal, iNumBitsRead);
194+ iErrorInfo = Read32BitsCabac (pDecEngine, &uiVal, &iNumBitsRead);
194195 uiOffset = (uiOffset << iNumBitsRead) | uiVal;
195196 iBitsLeft = iNumBitsRead;
196197 if (iErrorInfo && iBitsLeft == 0) {
@@ -202,24 +203,24 @@ int32_t DecodeBypassCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal) { · 5 unmodified lines
202203 if (uiOffset >= uiRangeValue) {
203204 pDecEngine->iBitsLeft = iBitsLeft;
204205 pDecEngine->uiOffset = uiOffset - uiRangeValue;
205− uiBinVal = 1;
206+ *uiBinVal = 1;
206207 return ERR_NONE;
207208 }
208209 pDecEngine->iBitsLeft = iBitsLeft;
209210 pDecEngine->uiOffset = uiOffset;
210− uiBinVal = 0;
211+ *uiBinVal = 0;
211212 return ERR_NONE;
212213 }
213214
214−int32_t DecodeTerminateCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal) {
215+int32_t DecodeTerminateCabac (PWelsCabacDecEngine pDecEngine, uint32_t *uiBinVal) {
215216 int32_t iErrorInfo = ERR_NONE;
216217 uint64_t uiRange = pDecEngine->uiRange - 2;
217218 uint64_t uiOffset = pDecEngine->uiOffset;
218219
219220 if (uiOffset >= (uiRange << pDecEngine->iBitsLeft)) {
220− uiBinVal = 1;
221+ *uiBinVal = 1;
221222 } else {
222− uiBinVal = 0;
223+ *uiBinVal = 0;
223224 // Renorm
224225 if (uiRange < WELS_CABAC_QUARTER) {
225226 int32_t iRenorm = g_kRenormTable256[uiRange];
@@ -228,7 +229,7 @@ int32_t DecodeTerminateCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal · 2 unmodified lines
228229 if (pDecEngine->iBitsLeft < 0) {
229230 uint32_t uiVal = 0;
230231 int32_t iNumBitsRead = 0;
231− iErrorInfo = Read32BitsCabac (pDecEngine, uiVal, iNumBitsRead);
232+ iErrorInfo = Read32BitsCabac (pDecEngine, &uiVal, &iNumBitsRead);
232233 pDecEngine->uiOffset = (pDecEngine->uiOffset << iNumBitsRead) | uiVal;
233234 pDecEngine->iBitsLeft += iNumBitsRead;
234235 }
@@ -245,30 +246,30 @@ int32_t DecodeTerminateCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal · 10 unmodified lines
245246 }
246247
247248 int32_t DecodeUnaryBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, int32_t iCtxOffset,
248− uint32_t& uiSymVal) {
249− uiSymVal = 0;
249+ uint32_t *uiSymVal) {
250+ *uiSymVal = 0;
250251 WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx, uiSymVal));
251− if (uiSymVal == 0) {
252+ if (*uiSymVal == 0) {
252253 return ERR_NONE;
253254 } else {
254255 uint32_t uiCode;
255256 pBinCtx += iCtxOffset;
256− uiSymVal = 0;
257+ *uiSymVal = 0;
257258 do {
258− WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx, uiCode));
259− ++uiSymVal;
259+ WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx, &uiCode));
260+ ++(*uiSymVal);
260261 } while (uiCode != 0);
261262 return ERR_NONE;
262263 }
263264 }
264265
265−int32_t DecodeExpBypassCabac (PWelsCabacDecEngine pDecEngine, int32_t iCount, uint32_t& uiSymVal) {
266+int32_t DecodeExpBypassCabac (PWelsCabacDecEngine pDecEngine, int32_t iCount, uint32_t *uiSymVal) {
266267 uint32_t uiCode;
267268 int32_t iSymTmp = 0;
268269 int32_t iSymTmp2 = 0;
269− uiSymVal = 0;
270+ *uiSymVal = 0;
270271 do {
271− WELS_READ_VERIFY (DecodeBypassCabac (pDecEngine, uiCode));
272+ WELS_READ_VERIFY (DecodeBypassCabac (pDecEngine, &uiCode));
272273 if (uiCode == 1) {
273274 iSymTmp += (1 << iCount);
274275 ++iCount;
@@ -279,55 +280,54 @@ int32_t DecodeExpBypassCabac (PWelsCabacDecEngine pDecEngine, int32_t iCount, ui · 4 unmodified lines
279280 }
280281
281282 while (iCount--) {
282− WELS_READ_VERIFY (DecodeBypassCabac (pDecEngine, uiCode));
283+ WELS_READ_VERIFY (DecodeBypassCabac (pDecEngine, &uiCode));
283284 if (uiCode == 1) {
284285 iSymTmp2 |= (1 << iCount);
285286 }
286287 }
287− uiSymVal = (uint32_t) (iSymTmp + iSymTmp2);
288+ *uiSymVal = (uint32_t) (iSymTmp + iSymTmp2);
288289 return ERR_NONE;
289290 }
290291
291−uint32_t DecodeUEGLevelCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, uint32_t& uiCode) {
292− uiCode = 0;
292+uint32_t DecodeUEGLevelCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, uint32_t *uiCode) {
293+ *uiCode = 0;
293294 WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx, uiCode));
294− if (uiCode == 0)
295+ if (*uiCode == 0)
295296 return ERR_NONE;
296297 else {
297298 uint32_t uiTmp, uiCount = 1;
298− uiCode = 0;
299+ *uiCode = 0;
299300 do {
300− WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx, uiTmp));
301− ++uiCode;
301+ WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx, &uiTmp));
302+ ++(*uiCode);
302303 ++uiCount;
303304 } while (uiTmp != 0 && uiCount != 13);
304305
305306 if (uiTmp != 0) {
306− WELS_READ_VERIFY (DecodeExpBypassCabac (pDecEngine, 0, uiTmp));
307− uiCode += uiTmp + 1;
307+ WELS_READ_VERIFY (DecodeExpBypassCabac (pDecEngine, 0, &uiTmp));
308+ *uiCode += uiTmp + 1;
308309 }
309310 return ERR_NONE;
310311 }
311− return ERR_NONE;
312312 }
313313
314−int32_t DecodeUEGMvCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, uint32_t iMaxBin, uint32_t& uiCode) {
314+int32_t DecodeUEGMvCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, uint32_t iMaxBin, uint32_t *uiCode) {
315+ USED(iMaxBin);
315316 WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx + g_kMvdBinPos2Ctx[0], uiCode));
316− if (uiCode == 0)
317+ if (*uiCode == 0)
317318 return ERR_NONE;
318319 else {
319320 uint32_t uiTmp, uiCount = 1;
320− uiCode = 0;
321+ *uiCode = 0;
321322 do {
322− WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx + g_kMvdBinPos2Ctx[uiCount++], uiTmp));
323− uiCode++;
323+ WELS_READ_VERIFY (DecodeBinCabac (pDecEngine, pBinCtx + g_kMvdBinPos2Ctx[uiCount++], &uiTmp));
324+ (*uiCode)++;
324325 } while (uiTmp != 0 && uiCount != 8);
325326
326327 if (uiTmp != 0) {
327− WELS_READ_VERIFY (DecodeExpBypassCabac (pDecEngine, 3, uiTmp));
328− uiCode += (uiTmp + 1);
328+ WELS_READ_VERIFY (DecodeExpBypassCabac (pDecEngine, 3, &uiTmp));
329+ *uiCode += (uiTmp + 1);
329330 }
330331 return ERR_NONE;
331332 }
332333 }
333−}

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