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

Function ParseIntra16x16Mode

codec/decoder/core/src/decode_slice.cpp:610–644  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

608}
609
610int32_t ParseIntra16x16Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail, PBitStringAux pBs,
611 PDqLayer pCurDqLayer) {
612 int32_t iMbXy = pCurDqLayer->iMbXyIndex;
613 uint8_t uiNeighAvail = 0; //0x07 = 0 1 1 1, means left, top-left, top avail or not. (1: avail, 0: unavail)
614 uint32_t uiCode;
615 int32_t iCode;
616 pCtx->pMap16x16NeighToSampleFunc (pNeighAvail, &uiNeighAvail);
617
618 if (CheckIntra16x16PredMode (uiNeighAvail,
619 &pCurDqLayer->pIntraPredMode[iMbXy][7])) { //invalid iPredMode, must stop decoding
620 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I16x16_PRED_MODE);
621 }
622 if (pCtx->pSps->uiChromaFormatIdc == 0)
623 return ERR_NONE;
624
625 if (pCurDqLayer->sLayerInfo.pPps->bEntropyCodingModeFlag) {
626 WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, iCode));
627 if (iCode > MAX_PRED_MODE_ID_CHROMA) {
628 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I_CHROMA_PRED_MODE);
629 }
630 pCurDqLayer->pChromaPredMode[iMbXy] = iCode;
631 } else {
632 WELS_READ_VERIFY (BsGetUe (pBs, &uiCode)); //intra_chroma_pred_mode
633 if (uiCode > MAX_PRED_MODE_ID_CHROMA) {
634 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I_CHROMA_PRED_MODE);
635 }
636 pCurDqLayer->pChromaPredMode[iMbXy] = uiCode;
637 }
638 if (-1 == pCurDqLayer->pChromaPredMode[iMbXy]
639 || CheckIntraChromaPredMode (uiNeighAvail, &pCurDqLayer->pChromaPredMode[iMbXy])) {
640 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I_CHROMA_PRED_MODE);
641 }
642
643 return ERR_NONE;
644}
645
646int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& uiEosFlag) {
647 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;

Calls 4

CheckIntra16x16PredModeFunction · 0.85
BsGetUeFunction · 0.85
CheckIntraChromaPredModeFunction · 0.85

Tested by

no test coverage detected