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/decode_slice.cpp (1 of 71 files). Show all

Unified · Split

codec/decoder/core/src/decode_slice.cpp+77−68
@@ -50,13 +50,11 @@ · 49 unmodified lines
5050
5151 #include "cpu_core.h"
5252
53−namespace WelsDec {
54−
5553 extern void FreePicture (PPicture pPic, CMemoryAlign* pMa);
5654
5755 extern PPicture AllocPicture (PWelsDecoderContext pCtx, const int32_t kiPicWidth, const int32_t kiPicHeight);
5856
59−static bool CheckRefPics (const PWelsDecoderContext& pCtx) {
57+static bool CheckRefPics (const PWelsDecoderContext pCtx) {
6058 int32_t listCount = 1;
6159 if (pCtx->eSliceType == B_SLICE) {
6260 ++listCount;
@@ -88,7 +86,7 @@ int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx) { · 25 unmodified lines
8886 int32_t iCurLayerWidth = pCurDqLayer->iMbWidth << 4;
8987 int32_t iCurLayerHeight = pCurDqLayer->iMbHeight << 4;
9088
91− int32_t iNextMbXyIndex = 0;
89+ int32_t iNextMbXyIndex;
9290 PFmo pFmo = pCtx->pFmo;
9391
9492 int32_t iTotalNumMb = pCurSlice->iTotalMbInCurSlice;
@@ -451,15 +449,15 @@ int32_t ParseIntra4x4Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail · 356 unmodified lines
451449 int32_t iMbXy = pCurDqLayer->iMbXyIndex;
452450 int32_t iFinalMode, i;
453451
454− uint8_t uiNeighAvail = 0;
452+ uint8_t uiNeighAvail;
455453 uint32_t uiCode;
456454 int32_t iCode;
457455 pCtx->pMapNxNNeighToSampleFunc (pNeighAvail, iSampleAvail);
458456 uiNeighAvail = (iSampleAvail[6] << 2) | (iSampleAvail[0] << 1) | (iSampleAvail[1]);
459457 for (i = 0; i < 16; i++) {
460− int32_t iPrevIntra4x4PredMode = 0;
458+ int32_t iPrevIntra4x4PredMode;
461459 if (pCurDqLayer->sLayerInfo.pPps->bEntropyCodingModeFlag) {
462− WELS_READ_VERIFY (ParseIntraPredModeLumaCabac (pCtx, iCode));
460+ WELS_READ_VERIFY (ParseIntraPredModeLumaCabac (pCtx, &iCode));
463461 iPrevIntra4x4PredMode = iCode;
464462 } else {
465463 WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode));
@@ -502,7 +500,7 @@ int32_t ParseIntra4x4Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail · 36 unmodified lines
502500 return ERR_NONE;
503501
504502 if (pCurDqLayer->sLayerInfo.pPps->bEntropyCodingModeFlag) {
505− WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, iCode));
503+ WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, &iCode));
506504 if (iCode > MAX_PRED_MODE_ID_CHROMA) {
507505 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I_CHROMA_PRED_MODE);
508506 }
@@ -530,7 +528,7 @@ int32_t ParseIntra8x8Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail · 21 unmodified lines
530528 int32_t iMbXy = pCurDqLayer->iMbXyIndex;
531529 int32_t iFinalMode, i;
532530
533− uint8_t uiNeighAvail = 0;
531+ uint8_t uiNeighAvail;
534532 uint32_t uiCode;
535533 int32_t iCode;
536534 pCtx->pMapNxNNeighToSampleFunc (pNeighAvail, iSampleAvail);
@@ -540,9 +538,9 @@ int32_t ParseIntra8x8Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail · 3 unmodified lines
540538 pCurDqLayer->pIntraNxNAvailFlag[iMbXy] = uiNeighAvail;
541539
542540 for (i = 0; i < 4; i++) {
543− int32_t iPrevIntra4x4PredMode = 0;
541+ int32_t iPrevIntra4x4PredMode;
544542 if (pCurDqLayer->sLayerInfo.pPps->bEntropyCodingModeFlag) {
545− WELS_READ_VERIFY (ParseIntraPredModeLumaCabac (pCtx, iCode));
543+ WELS_READ_VERIFY (ParseIntraPredModeLumaCabac (pCtx, &iCode));
546544 iPrevIntra4x4PredMode = iCode;
547545 } else {
548546 WELS_READ_VERIFY (BsGetOneBit (pBs, &uiCode));
@@ -586,7 +584,7 @@ int32_t ParseIntra8x8Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail · 37 unmodified lines
586584 return ERR_NONE;
587585
588586 if (pCurDqLayer->sLayerInfo.pPps->bEntropyCodingModeFlag) {
589− WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, iCode));
587+ WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, &iCode));
590588 if (iCode > MAX_PRED_MODE_ID_CHROMA) {
591589 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I_CHROMA_PRED_MODE);
592590 }
@@ -623,7 +621,7 @@ int32_t ParseIntra16x16Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAva · 30 unmodified lines
623621 return ERR_NONE;
624622
625623 if (pCurDqLayer->sLayerInfo.pPps->bEntropyCodingModeFlag) {
626− WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, iCode));
624+ WELS_READ_VERIFY (ParseIntraPredModeChromaCabac (pCtx, uiNeighAvail, &iCode));
627625 if (iCode > MAX_PRED_MODE_ID_CHROMA) {
628626 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_I_CHROMA_PRED_MODE);
629627 }
@@ -643,7 +641,7 @@ int32_t ParseIntra16x16Mode (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAva · 13 unmodified lines
643641 return ERR_NONE;
644642 }
645643
646−int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& uiEosFlag) {
644+int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t *uiEosFlag) {
647645 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
648646 PBitStringAux pBsAux = pCurDqLayer->pBitStringAux;
649647 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
@@ -653,7 +651,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 3 unmodified lines
653651 int32_t iScanIdxEnd = pSlice->sSliceHeaderExt.uiScanIdxEnd;
654652 int32_t iMbXy = pCurDqLayer->iMbXyIndex;
655653 int32_t i;
656− uint32_t uiMbType = 0, uiCbp = 0, uiCbpLuma = 0, uiCbpChroma = 0;
654+ uint32_t uiMbType = 0, uiCbp = 0, uiCbpLuma, uiCbpChroma;
657655
658656 ENFORCE_STACK_ALIGN_1D (uint8_t, pNonZeroCount, 48, 16);
659657
@@ -663,7 +661,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 3 unmodified lines
663661 pCurDqLayer->pInterPredictionDoneFlag[iMbXy] = 0;
664662 pCurDqLayer->pResidualPredFlag[iMbXy] = pSlice->sSliceHeaderExt.bDefaultResidualPredFlag;
665663 GetNeighborAvailMbType (&sNeighAvail, pCurDqLayer);
666− WELS_READ_VERIFY (ParseMBTypeISliceCabac (pCtx, &sNeighAvail, uiMbType));
664+ WELS_READ_VERIFY (ParseMBTypeISliceCabac (pCtx, &sNeighAvail, &uiMbType));
667665 if (uiMbType > 25) {
668666 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_MB_TYPE);
669667 } else if (!pCtx->pSps->uiChromaFormatIdc && ((uiMbType >= 5 && uiMbType <= 12) || (uiMbType >= 17
@@ -674,7 +672,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 4 unmodified lines
674672 WELS_READ_VERIFY (ParseIPCMInfoCabac (pCtx));
675673 pSlice->iLastDeltaQp = 0;
676674 WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag));
677− if (uiEosFlag) {
675+ if (*uiEosFlag) {
678676 RestoreCabacDecEngineToBS (pCtx->pCabacDecEngine, pCtx->pCurDqLayer->pBitStringAux);
679677 }
680678 return ERR_NONE;
@@ -683,7 +681,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 2 unmodified lines
683681 pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA4x4;
684682 if (pCtx->pPps->bTransform8x8ModeFlag) {
685683 // Transform 8x8 cabac will be added soon
686− WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, &sNeighAvail, pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]));
684+ WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, &sNeighAvail, &pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]));
687685 }
688686 if (pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
689687 uiMbType = pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA8x8;
@@ -694,7 +692,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 4 unmodified lines
694692 WELS_READ_VERIFY (ParseIntra4x4Mode (pCtx, &sNeighAvail, pIntraPredMode, pBsAux, pCurDqLayer));
695693 }
696694 //get uiCbp for I4x4
697− WELS_READ_VERIFY (ParseCbpInfoCabac (pCtx, &sNeighAvail, uiCbp));
695+ WELS_READ_VERIFY (ParseCbpInfoCabac (pCtx, &sNeighAvail, &uiCbp));
698696 pCurDqLayer->pCbp[iMbXy] = uiCbp;
699697 pSlice->iLastDeltaQp = uiCbp == 0 ? 0 : pSlice->iLastDeltaQp;
700698 uiCbpChroma = pCtx->pSps->uiChromaFormatIdc ? uiCbp >> 4 : 0;
@@ -730,7 +728,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 29 unmodified lines
730728 if (pCurDqLayer->pCbp[iMbXy] || MB_TYPE_INTRA16x16 == pCurDqLayer->pDec->pMbType[iMbXy]) {
731729 memset (pCurDqLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurDqLayer->pScaledTCoeff[iMbXy][0]));
732730 int32_t iQpDelta, iId8x8, iId4x4;
733− WELS_READ_VERIFY (ParseDeltaQpCabac (pCtx, iQpDelta));
731+ WELS_READ_VERIFY (ParseDeltaQpCabac (pCtx, &iQpDelta));
734732 if (iQpDelta > 25 || iQpDelta < -26) {//out of iQpDelta range
735733 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_QP);
736734 }
@@ -844,18 +842,19 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 107 unmodified lines
844842 }
845843
846844 WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag));
847− if (uiEosFlag) {
845+ if (*uiEosFlag) {
848846 RestoreCabacDecEngineToBS (pCtx->pCabacDecEngine, pCtx->pCurDqLayer->pBitStringAux);
849847 }
850848 return ERR_NONE;
851849 }
852850
853−int32_t WelsDecodeMbCabacISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t& uiEosFlag) {
851+int32_t WelsDecodeMbCabacISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t *uiEosFlag) {
852+ USED(pNalCur);
854853 WELS_READ_VERIFY (WelsDecodeMbCabacISliceBaseMode0 (pCtx, uiEosFlag));
855854 return ERR_NONE;
856855 }
857856
858−int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail, uint32_t& uiEosFlag) {
857+int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail, uint32_t *uiEosFlag) {
859858 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
860859 PBitStringAux pBsAux = pCurDqLayer->pBitStringAux;
861860 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
@@ -872,7 +871,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 10 unmodified lines
872871
873872 pCurDqLayer->pInterPredictionDoneFlag[iMbXy] = 0;
874873
875− WELS_READ_VERIFY (ParseMBTypePSliceCabac (pCtx, pNeighAvail, uiMbType));
874+ WELS_READ_VERIFY (ParseMBTypePSliceCabac (pCtx, pNeighAvail, &uiMbType));
876875 // uiMbType = 4 is not allowded.
877876 if (uiMbType < 4) { //Inter mode
878877 int16_t pMotionVector[LIST_A][30][MV_A];
@@ -894,7 +893,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 15 unmodified lines
894893 WELS_READ_VERIFY (ParseIPCMInfoCabac (pCtx));
895894 pSlice->iLastDeltaQp = 0;
896895 WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag));
897− if (uiEosFlag) {
896+ if (*uiEosFlag) {
898897 RestoreCabacDecEngineToBS (pCtx->pCabacDecEngine, pCtx->pCurDqLayer->pBitStringAux);
899898 }
900899 return ERR_NONE;
@@ -903,7 +902,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 2 unmodified lines
903902 ENFORCE_STACK_ALIGN_1D (int8_t, pIntraPredMode, 48, 16);
904903 pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA4x4;
905904 if (pCtx->pPps->bTransform8x8ModeFlag) {
906− WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, pNeighAvail, pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]));
905+ WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, pNeighAvail, &pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]));
907906 }
908907 if (pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
909908 uiMbType = pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA8x8;
@@ -935,7 +934,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 25 unmodified lines
935934 ST32 (&pCurDqLayer->pNzc[iMbXy][20], 0);
936935
937936 if (MB_TYPE_INTRA16x16 != pCurDqLayer->pDec->pMbType[iMbXy]) {
938− WELS_READ_VERIFY (ParseCbpInfoCabac (pCtx, pNeighAvail, uiCbp));
937+ WELS_READ_VERIFY (ParseCbpInfoCabac (pCtx, pNeighAvail, &uiCbp));
939938
940939 pCurDqLayer->pCbp[iMbXy] = uiCbp;
941940 pSlice->iLastDeltaQp = uiCbp == 0 ? 0 : pSlice->iLastDeltaQp;
@@ -957,7 +956,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 15 unmodified lines
957956
958957 if (bNeedParseTransformSize8x8Flag) {
959958 WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, pNeighAvail,
960− pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy])); //transform_size_8x8_flag
959+ &pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy])); //transform_size_8x8_flag
961960 }
962961 }
963962
@@ -965,7 +964,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 1 unmodified line
965964
966965 int32_t iQpDelta, iId8x8, iId4x4;
967966
968− WELS_READ_VERIFY (ParseDeltaQpCabac (pCtx, iQpDelta));
967+ WELS_READ_VERIFY (ParseDeltaQpCabac (pCtx, &iQpDelta));
969968 if (iQpDelta > 25 || iQpDelta < -26) { //out of iQpDelta range
970969 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_QP);
971970 }
@@ -1085,14 +1084,14 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 113 unmodified lines
10851084 }
10861085
10871086 WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag));
1088− if (uiEosFlag) {
1087+ if (*uiEosFlag) {
10891088 RestoreCabacDecEngineToBS (pCtx->pCabacDecEngine, pCtx->pCurDqLayer->pBitStringAux);
10901089 }
10911090
10921091 return ERR_NONE;
10931092 }
10941093
1095−int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail, uint32_t& uiEosFlag) {
1094+int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAvail pNeighAvail, uint32_t *uiEosFlag) {
10961095 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
10971096 PBitStringAux pBsAux = pCurDqLayer->pBitStringAux;
10981097 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
@@ -1109,7 +1108,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 10 unmodified lines
11091108
11101109 pCurDqLayer->pInterPredictionDoneFlag[iMbXy] = 0;
11111110
1112− WELS_READ_VERIFY (ParseMBTypeBSliceCabac (pCtx, pNeighAvail, uiMbType));
1111+ WELS_READ_VERIFY (ParseMBTypeBSliceCabac (pCtx, pNeighAvail, &uiMbType));
11131112
11141113 if (uiMbType < 23) { //Inter B mode
11151114 int16_t pMotionVector[LIST_A][30][MV_A];
@@ -1134,7 +1133,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 18 unmodified lines
11341133 WELS_READ_VERIFY (ParseIPCMInfoCabac (pCtx));
11351134 pSlice->iLastDeltaQp = 0;
11361135 WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag));
1137− if (uiEosFlag) {
1136+ if (*uiEosFlag) {
11381137 RestoreCabacDecEngineToBS (pCtx->pCabacDecEngine, pCtx->pCurDqLayer->pBitStringAux);
11391138 }
11401139 return ERR_NONE;
@@ -1143,7 +1142,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 2 unmodified lines
11431142 ENFORCE_STACK_ALIGN_1D (int8_t, pIntraPredMode, 48, 16);
11441143 pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA4x4;
11451144 if (pCtx->pPps->bTransform8x8ModeFlag) {
1146− WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, pNeighAvail, pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]));
1145+ WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, pNeighAvail, &pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]));
11471146 }
11481147 if (pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
11491148 uiMbType = pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA8x8;
@@ -1175,7 +1174,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 25 unmodified lines
11751174 ST32 (&pCurDqLayer->pNzc[iMbXy][20], 0);
11761175
11771176 if (MB_TYPE_INTRA16x16 != pCurDqLayer->pDec->pMbType[iMbXy]) {
1178− WELS_READ_VERIFY (ParseCbpInfoCabac (pCtx, pNeighAvail, uiCbp));
1177+ WELS_READ_VERIFY (ParseCbpInfoCabac (pCtx, pNeighAvail, &uiCbp));
11791178
11801179 pCurDqLayer->pCbp[iMbXy] = uiCbp;
11811180 pSlice->iLastDeltaQp = uiCbp == 0 ? 0 : pSlice->iLastDeltaQp;
@@ -1198,7 +1197,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 16 unmodified lines
11981197
11991198 if (bNeedParseTransformSize8x8Flag) {
12001199 WELS_READ_VERIFY (ParseTransformSize8x8FlagCabac (pCtx, pNeighAvail,
1201− pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy])); //transform_size_8x8_flag
1200+ &pCtx->pCurDqLayer->pTransformSize8x8Flag[iMbXy])); //transform_size_8x8_flag
12021201 }
12031202 }
12041203
@@ -1206,7 +1205,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 1 unmodified line
12061205
12071206 int32_t iQpDelta, iId8x8, iId4x4;
12081207
1209− WELS_READ_VERIFY (ParseDeltaQpCabac (pCtx, iQpDelta));
1208+ WELS_READ_VERIFY (ParseDeltaQpCabac (pCtx, &iQpDelta));
12101209 if (iQpDelta > 25 || iQpDelta < -26) { //out of iQpDelta range
12111210 return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_QP);
12121211 }
@@ -1326,7 +1325,7 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 113 unmodified lines
13261325 }
13271326
13281327 WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag));
1329− if (uiEosFlag) {
1328+ if (*uiEosFlag) {
13301329 RestoreCabacDecEngineToBS (pCtx->pCabacDecEngine, pCtx->pCurDqLayer->pBitStringAux);
13311330 }
13321331
@@ -1334,7 +1333,8 @@ int32_t WelsDecodeMbCabacBSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 1 unmodified line
13341333 }
13351334
13361335
1337−int32_t WelsDecodeMbCabacPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t& uiEosFlag) {
1336+int32_t WelsDecodeMbCabacPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t *uiEosFlag) {
1337+ USED(pNalCur);
13381338 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
13391339 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
13401340 PSliceHeader pSliceHeader = &pSlice->sSliceHeaderExt.sSliceHeader;
@@ -1351,8 +1351,7 @@ int32_t WelsDecodeMbCabacPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 10 unmodified lines
13511351 pCurDqLayer->pTransformSize8x8Flag[iMbXy] = false;
13521352
13531353 GetNeighborAvailMbType (&uiNeighAvail, pCurDqLayer);
1354− WELS_READ_VERIFY (ParseSkipFlagCabac (pCtx, &uiNeighAvail, uiCode));
1355−
1354+ WELS_READ_VERIFY (ParseSkipFlagCabac (pCtx, &uiNeighAvail, &uiCode));
13561355 if (uiCode) {
13571356 int16_t pMv[2] = {0};
13581357 pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_SKIP;
@@ -1399,7 +1398,8 @@ int32_t WelsDecodeMbCabacPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 40 unmodified lines
13991398 }
14001399
14011400
1402−int32_t WelsDecodeMbCabacBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t& uiEosFlag) {
1401+int32_t WelsDecodeMbCabacBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t *uiEosFlag) {
1402+ USED(pNalCur);
14031403 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
14041404 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
14051405 PSliceHeader pSliceHeader = &pSlice->sSliceHeaderExt.sSliceHeader;
@@ -1417,7 +1417,7 @@ int32_t WelsDecodeMbCabacBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 11 unmodified lines
14171417 pCurDqLayer->pTransformSize8x8Flag[iMbXy] = false;
14181418
14191419 GetNeighborAvailMbType (&uiNeighAvail, pCurDqLayer);
1420− WELS_READ_VERIFY (ParseSkipFlagCabac (pCtx, &uiNeighAvail, uiCode));
1420+ WELS_READ_VERIFY (ParseSkipFlagCabac (pCtx, &uiNeighAvail, &uiCode));
14211421
14221422 memset (pCurDqLayer->pDirect[iMbXy], 0, sizeof (int8_t) * 16);
14231423
@@ -1450,13 +1450,13 @@ int32_t WelsDecodeMbCabacBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 26 unmodified lines
14501450 if (pSliceHeader->iDirectSpatialMvPredFlag) {
14511451
14521452 //predict direct spatial mv
1453− int32_t ret = PredMvBDirectSpatial (pCtx, pMv, ref, subMbType);
1453+ int32_t ret = PredMvBDirectSpatial (pCtx, pMv, ref, &subMbType);
14541454 if (ret != ERR_NONE) {
14551455 return ret;
14561456 }
14571457 } else {
14581458 //temporal direct mode
1459− int32_t ret = PredBDirectTemporal (pCtx, pMv, ref, subMbType);
1459+ int32_t ret = PredBDirectTemporal (pCtx, pMv, ref, &subMbType);
14601460 if (ret != ERR_NONE) {
14611461 return ret;
14621462 }
@@ -1513,6 +1513,7 @@ int32_t WelsCalcDeqCoeffScalingList (PWelsDecoderContext pCtx) { · 50 unmodified lines
15131513 }
15141514
15151515 int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNalUnit pNalCur) {
1516+ USED(bFirstSliceInLayer);
15161517 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
15171518 PFmo pFmo = pCtx->pFmo;
15181519 int32_t iRet;
@@ -1523,7 +1524,7 @@ int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNal · 4 unmodified lines
15231524 PSliceHeader pSliceHeader = &pSliceHeaderExt->sSliceHeader;
15241525 int32_t iMbX, iMbY;
15251526 const int32_t kiCountNumMb = pSliceHeader->pSps->uiTotalMbCount; //need to be correct when fmo or multi slice
1526− uint32_t uiEosFlag = 0;
1527+ uint32_t uiEosFlag;
15271528 PWelsDecMbFunc pDecMbFunc;
15281529
15291530 pSlice->iTotalMbInCurSlice = 0; //initialize at the starting of slice decoding.
@@ -1535,6 +1536,7 @@ int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNal · 5 unmodified lines
15351536 WelsLog (& (pCtx->sLogCtx), WELS_LOG_ERROR,
15361537 "WelsDecodeSlice()::::ILP flag exist, not supported with CABAC enabled!");
15371538 pCtx->iErrorCode |= dsBitstreamError;
1539+ fprint(2, "dsBitstreamError\n");
15381540 return dsBitstreamError;
15391541 }
15401542 if (P_SLICE == pSliceHeader->eSliceType)
@@ -1586,15 +1588,17 @@ int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNal · 45 unmodified lines
15861588 pCurDqLayer->iMbXyIndex = iNextMbXyIndex;
15871589
15881590 do {
1591+ //fprint(2, "(-1 == %d) || (%d >= %d) → %d\n", iNextMbXyIndex, iNextMbXyIndex, kiCountNumMb, (-1 == iNextMbXyIndex) || (iNextMbXyIndex >= kiCountNumMb));
15891592 if ((-1 == iNextMbXyIndex) || (iNextMbXyIndex >= kiCountNumMb)) { // slice group boundary or end of a frame
15901593 break;
15911594 }
15921595
15931596 pCurDqLayer->pSliceIdc[iNextMbXyIndex] = iSliceIdc;
15941597 pCtx->bMbRefConcealed = false;
1595− iRet = pDecMbFunc (pCtx, pNalCur, uiEosFlag);
1598+ iRet = pDecMbFunc (pCtx, pNalCur, &uiEosFlag);
15961599 pCurDqLayer->pMbRefConcealedFlag[iNextMbXyIndex] = pCtx->bMbRefConcealed;
15971600 if (iRet != ERR_NONE) {
1601+ fprint(2, "pDecMbFunc %p %p %d\n", pDecMbFunc, WelsDecodeMbCabacPSlice, iRet);
15981602 return iRet;
15991603 }
16001604
@@ -1659,6 +1663,7 @@ int32_t WelsDecodeAndConstructSlice (PWelsDecoderContext pCtx) { · 58 unmodified lines
16591663 pDecMbFunc = WelsDecodeMbCavlcISlice;
16601664 }
16611665 }
1666+ USED(pDecMbFunc);
16621667
16631668 if (pSliceHeader->pPps->bConstainedIntraPredFlag) {
16641669 pCtx->pFillInfoCacheIntraNxNFunc = WelsFillCacheConstrain1IntraNxN;
@@ -1697,7 +1702,7 @@ int32_t WelsDecodeAndConstructSlice (PWelsDecoderContext pCtx) { · 32 unmodified lines
16971702 SDeblockingFilter pFilter;
16981703 int32_t iFilterIdc = 1;
16991704 if (pSliceHeader->uiDisableDeblockingFilterIdc != 1) {
1700− WelsDeblockingInitFilter (pCtx, pFilter, iFilterIdc);
1705+ WelsDeblockingInitFilter (pCtx, &pFilter, &iFilterIdc);
17011706 }
17021707
17031708 do {
@@ -1707,7 +1712,7 @@ int32_t WelsDecodeAndConstructSlice (PWelsDecoderContext pCtx) { · 3 unmodified lines
17071712
17081713 pCurDqLayer->pSliceIdc[iNextMbXyIndex] = iSliceIdc;
17091714 pCtx->bMbRefConcealed = false;
1710− iRet = pDecMbFunc (pCtx, pNalCur, uiEosFlag);
1715+ iRet = pDecMbFunc (pCtx, pNalCur, &uiEosFlag);
17111716 pCurDqLayer->pMbRefConcealedFlag[iNextMbXyIndex] = pCtx->bMbRefConcealed;
17121717 if (iRet != ERR_NONE) {
17131718 return iRet;
@@ -1724,7 +1729,7 @@ int32_t WelsDecodeAndConstructSlice (PWelsDecoderContext pCtx) { · 10 unmodified lines
17241729 pCtx->sBlockFunc.pWelsSetNonZeroCountFunc (
17251730 pCtx->pDec->pNzc[pCurDqLayer->iMbXyIndex]); // set all none-zero nzc to 1; dbk can be opti!
17261731 }
1727− WelsDeblockingFilterMB (pCurDqLayer, pFilter, iFilterIdc, pDeblockMb);
1732+ WelsDeblockingFilterMB (pCurDqLayer, &pFilter, &iFilterIdc, pDeblockMb);
17281733 if (pCtx->uiNalRefIdc > 0) {
17291734 if (pCurDqLayer->iMbX == 0 || pCurDqLayer->iMbX == pCurDqLayer->iMbWidth - 1 || pCurDqLayer->iMbY == 0
17301735 || pCurDqLayer->iMbY == pCurDqLayer->iMbHeight - 1) {
@@ -1799,8 +1804,8 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 68 unmodified lines
17991804 const int32_t iMbXy = pCurDqLayer->iMbXyIndex;
18001805 int8_t* pNzc = pCurDqLayer->pNzc[iMbXy];
18011806 int32_t i;
1802− int32_t iRet = ERR_NONE;
1803− uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
1807+ int32_t iRet;
1808+ uint32_t uiMbType, uiCbp, uiCbpL, uiCbpC;
18041809 uint32_t uiCode;
18051810 int32_t iCode;
18061811
@@ -1881,6 +1886,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 74 unmodified lines
18811886 pCurDqLayer->pTransformSize8x8Flag[iMbXy] = !!uiCode;
18821887 if (pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
18831888 uiMbType = pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA8x8;
1889+ USED(uiMbType);
18841890 }
18851891 }
18861892 if (!pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
@@ -2063,12 +2069,13 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 176 unmodified lines
20632069 return ERR_NONE;
20642070 }
20652071
2066−int32_t WelsDecodeMbCavlcISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t& uiEosFlag) {
2072+int32_t WelsDecodeMbCavlcISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t *uiEosFlag) {
2073+ USED(pNalCur);
20672074 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
20682075 PBitStringAux pBs = pCurDqLayer->pBitStringAux;
20692076 PSliceHeaderExt pSliceHeaderExt = &pCurDqLayer->sLayerInfo.sSliceInLayer.sSliceHeaderExt;
20702077 int32_t iBaseModeFlag;
2071− int32_t iRet = 0; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
2078+ int32_t iRet; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
20722079 uint32_t uiCode;
20732080 intX_t iUsedBits;
20742081 if (pSliceHeaderExt->bAdaptiveBaseModeFlag == 1) {
@@ -2092,7 +2099,7 @@ int32_t WelsDecodeMbCavlcISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 17 unmodified lines
20922099 iUsedBits = ((pBs->pCurBuf - pBs->pStartBuf) << 3) - (16 - pBs->iLeftBits);
20932100 // sub 1, for stop bit
20942101 if ((iUsedBits == (pBs->iBits - 1)) && (0 >= pCurDqLayer->sLayerInfo.sSliceInLayer.iMbSkipRun)) { // slice boundary
2095− uiEosFlag = 1;
2102+ *uiEosFlag = 1;
20962103 }
20972104 if (iUsedBits > (pBs->iBits -
20982105 1)) { //When BS incomplete, as long as find it, SHOULD stop decoding to avoid mosaic or crash.
@@ -2120,8 +2127,8 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 21 unmodified lines
21202127 const int32_t iMbXy = pCurDqLayer->iMbXyIndex;
21212128 int8_t* pNzc = pCurDqLayer->pNzc[iMbXy];
21222129 int32_t i;
2123− int32_t iRet = ERR_NONE;
2124− uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
2130+ int32_t iRet;
2131+ uint32_t uiMbType, uiCbp, uiCbpL = 0, uiCbpC = 0;
21252132 uint32_t uiCode;
21262133 int32_t iCode;
21272134 int32_t iMbResProperty;
@@ -2230,6 +2237,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 102 unmodified lines
22302237 pCurDqLayer->pTransformSize8x8Flag[iMbXy] = !!uiCode;
22312238 if (pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
22322239 uiMbType = pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA8x8;
2240+ USED(uiMbType);
22332241 }
22342242 }
22352243 if (!pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
@@ -2440,7 +2448,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 204 unmodified lines
24402448 return ERR_NONE;
24412449 }
24422450
2443−int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t& uiEosFlag) {
2451+int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t *uiEosFlag) {
24442452 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
24452453 PBitStringAux pBs = pCurDqLayer->pBitStringAux;
24462454 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
@@ -2450,7 +2458,7 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 3 unmodified lines
24502458 const int32_t iMbXy = pCurDqLayer->iMbXyIndex;
24512459 int8_t* pNzc = pCurDqLayer->pNzc[iMbXy];
24522460 int32_t iBaseModeFlag, i;
2453− int32_t iRet = 0; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
2461+ int32_t iRet; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
24542462 uint32_t uiCode;
24552463
24562464 pCurDqLayer->pNoSubMbPartSizeLessThan8x8Flag[iMbXy] = true;
@@ -2522,7 +2530,7 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 65 unmodified lines
25222530 iUsedBits = ((pBs->pCurBuf - pBs->pStartBuf) << 3) - (16 - pBs->iLeftBits);
25232531 // sub 1, for stop bit
25242532 if ((iUsedBits == (pBs->iBits - 1)) && (0 >= pCurDqLayer->sLayerInfo.sSliceInLayer.iMbSkipRun)) { // slice boundary
2525− uiEosFlag = 1;
2533+ *uiEosFlag = 1;
25262534 }
25272535 if (iUsedBits > (pBs->iBits -
25282536 1)) { //When BS incomplete, as long as find it, SHOULD stop decoding to avoid mosaic or crash.
@@ -2534,7 +2542,7 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 5 unmodified lines
25342542 return ERR_NONE;
25352543 }
25362544
2537−int32_t WelsDecodeMbCavlcBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t& uiEosFlag) {
2545+int32_t WelsDecodeMbCavlcBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uint32_t *uiEosFlag) {
25382546 PDqLayer pCurDqLayer = pCtx->pCurDqLayer;
25392547 PBitStringAux pBs = pCurDqLayer->pBitStringAux;
25402548 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
@@ -2545,7 +2553,7 @@ int32_t WelsDecodeMbCavlcBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 4 unmodified lines
25452553 const int32_t iMbXy = pCurDqLayer->iMbXyIndex;
25462554 int8_t* pNzc = pCurDqLayer->pNzc[iMbXy];
25472555 int32_t iBaseModeFlag, i;
2548− int32_t iRet = 0; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
2556+ int32_t iRet; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
25492557 uint32_t uiCode;
25502558
25512559 pCurDqLayer->pNoSubMbPartSizeLessThan8x8Flag[iMbXy] = true;
@@ -2587,13 +2595,13 @@ int32_t WelsDecodeMbCavlcBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 35 unmodified lines
25872595 if (pSliceHeader->iDirectSpatialMvPredFlag) {
25882596
25892597 //predict direct spatial mv
2590− int32_t ret = PredMvBDirectSpatial (pCtx, iMv, ref, subMbType);
2598+ int32_t ret = PredMvBDirectSpatial (pCtx, iMv, ref, &subMbType);
25912599 if (ret != ERR_NONE) {
25922600 return ret;
25932601 }
25942602 } else {
25952603 //temporal direct mode
2596− int32_t ret = PredBDirectTemporal (pCtx, iMv, ref, subMbType);
2604+ int32_t ret = PredBDirectTemporal (pCtx, iMv, ref, &subMbType);
25972605 if (ret != ERR_NONE) {
25982606 return ret;
25992607 }
@@ -2636,7 +2644,7 @@ int32_t WelsDecodeMbCavlcBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 36 unmodified lines
26362644 iUsedBits = ((pBs->pCurBuf - pBs->pStartBuf) << 3) - (16 - pBs->iLeftBits);
26372645 // sub 1, for stop bit
26382646 if ((iUsedBits == (pBs->iBits - 1)) && (0 >= pCurDqLayer->sLayerInfo.sSliceInLayer.iMbSkipRun)) { // slice boundary
2639− uiEosFlag = 1;
2647+ *uiEosFlag = 1;
26402648 }
26412649 if (iUsedBits > (pBs->iBits -
26422650 1)) { //When BS incomplete, as long as find it, SHOULD stop decoding to avoid mosaic or crash.
@@ -2664,8 +2672,8 @@ int32_t WelsActualDecodeMbCavlcBSlice (PWelsDecoderContext pCtx) { · 21 unmodified lines
26642672 const int32_t iMbXy = pCurDqLayer->iMbXyIndex;
26652673 int8_t* pNzc = pCurDqLayer->pNzc[iMbXy];
26662674 int32_t i;
2667− int32_t iRet = ERR_NONE;
2668− uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
2675+ int32_t iRet;
2676+ uint32_t uiMbType, uiCbp, uiCbpL = 0, uiCbpC = 0;
26692677 uint32_t uiCode;
26702678 int32_t iCode;
26712679 int32_t iMbResProperty;
@@ -2774,6 +2782,7 @@ int32_t WelsActualDecodeMbCavlcBSlice (PWelsDecoderContext pCtx) { · 102 unmodified lines
27742782 pCurDqLayer->pTransformSize8x8Flag[iMbXy] = !!uiCode;
27752783 if (pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
27762784 uiMbType = pCurDqLayer->pDec->pMbType[iMbXy] = MB_TYPE_INTRA8x8;
2785+ USED(uiMbType);
27772786 }
27782787 }
27792788 if (!pCurDqLayer->pTransformSize8x8Flag[iMbXy]) {
@@ -2985,6 +2994,7 @@ int32_t WelsActualDecodeMbCavlcBSlice (PWelsDecoderContext pCtx) { · 205 unmodified lines
29852994 }
29862995
29872996 void WelsBlockFuncInit (SBlockFunc* pFunc, int32_t iCpu) {
2997+ USED(iCpu);
29882998 pFunc->pWelsSetNonZeroCountFunc = WelsNonZeroCount_c;
29892999 pFunc->pWelsBlockZero16x16Func = WelsBlockZero16x16_c;
29903000 pFunc->pWelsBlockZero8x8Func = WelsBlockZero8x8_c;
@@ -3061,4 +3071,3 @@ bool ComputeColocatedTemporalScaling (PWelsDecoderContext pCtx) { · 70 unmodified lines
30613071 }
30623072 return true;
30633073 }
3064−} // namespace WelsDec

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