MCPcopy Create free account
hub / github.com/cisco/openh264 / DecodeTerminateCabac

Function DecodeTerminateCabac

codec/decoder/core/src/cabac_decoder.cpp:214–245  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212}
213
214int32_t DecodeTerminateCabac (PWelsCabacDecEngine pDecEngine, uint32_t& uiBinVal) {
215 int32_t iErrorInfo = ERR_NONE;
216 uint64_t uiRange = pDecEngine->uiRange - 2;
217 uint64_t uiOffset = pDecEngine->uiOffset;
218
219 if (uiOffset >= (uiRange << pDecEngine->iBitsLeft)) {
220 uiBinVal = 1;
221 } else {
222 uiBinVal = 0;
223 // Renorm
224 if (uiRange < WELS_CABAC_QUARTER) {
225 int32_t iRenorm = g_kRenormTable256[uiRange];
226 pDecEngine->uiRange = (uiRange << iRenorm);
227 pDecEngine->iBitsLeft -= iRenorm;
228 if (pDecEngine->iBitsLeft < 0) {
229 uint32_t uiVal = 0;
230 int32_t iNumBitsRead = 0;
231 iErrorInfo = Read32BitsCabac (pDecEngine, uiVal, iNumBitsRead);
232 pDecEngine->uiOffset = (pDecEngine->uiOffset << iNumBitsRead) | uiVal;
233 pDecEngine->iBitsLeft += iNumBitsRead;
234 }
235 if (iErrorInfo && pDecEngine->iBitsLeft < 0) {
236 return iErrorInfo;
237 }
238 return ERR_NONE;
239 } else {
240 pDecEngine->uiRange = uiRange;
241 return ERR_NONE;
242 }
243 }
244 return ERR_NONE;
245}
246
247int32_t DecodeUnaryBinCabac (PWelsCabacDecEngine pDecEngine, PWelsCabacCtx pBinCtx, int32_t iCtxOffset,
248 uint32_t& uiSymVal) {

Callers 4

DecodeCabacIntraMbTypeFunction · 0.85
ParseEndOfSliceCabacFunction · 0.85
ParseMBTypeISliceCabacFunction · 0.85
ParseMBTypePSliceCabacFunction · 0.85

Calls 1

Read32BitsCabacFunction · 0.85

Tested by

no test coverage detected