From 3fc33c6ccbd49d3c393da597626cc7144ee1cc16 Mon Sep 17 00:00:00 2001 From: Muhammed Coban <mcoban@qti.qualcomm.com> Date: Wed, 24 Apr 2019 22:17:17 -0700 Subject: [PATCH 1/2] RDPCM RDOQ bug fix and variable name prefix cleanup. --- source/Lib/CommonLib/QuantRDOQ.cpp | 4 ++-- source/Lib/EncoderLib/IntraSearch.cpp | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/Lib/CommonLib/QuantRDOQ.cpp b/source/Lib/CommonLib/QuantRDOQ.cpp index 86fb173e60..0718305991 100644 --- a/source/Lib/CommonLib/QuantRDOQ.cpp +++ b/source/Lib/CommonLib/QuantRDOQ.cpp @@ -1622,7 +1622,7 @@ void QuantRDOQ::forwardRDPCM( TransformUnit &tu, const ComponentID &compID, cons const BinFracBits fracBitsPar = fracBits.getFracBitsArray(cctx.parityCtxIdAbsTS()); goRiceParam = cctx.templateAbsSumTS(scanPos, dstCoeff); - const BinFracBits fracBitsSign = fracBits.getFracBitsArray(Ctx::TsResidualSign(toChannelType(compID))); + const BinFracBits fracBitsSign = fracBits.getFracBitsArray(Ctx::TsResidualSign(1)); const uint8_t sign = srcCoeff[blkPos] - predCoeff < 0 ? 1 : 0; DTRACE_COND((maxAbsLevel != 0), g_trace_ctx, D_RDOQ_MORE, " uiCtxSig=%d", ctxIdSig); @@ -1721,7 +1721,7 @@ void QuantRDOQ::forwardRDPCM( TransformUnit &tu, const ComponentID &compID, cons { int blkPos = cctx.blockPos(scanPos); TCoeff level = dstCoeff[blkPos]; - absSum += level; + absSum += abs(level); } } diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp index 5e0281f65e..77869ae070 100644 --- a/source/Lib/EncoderLib/IntraSearch.cpp +++ b/source/Lib/EncoderLib/IntraSearch.cpp @@ -1180,13 +1180,13 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, #if JVET_N0217_MATRIX_INTRAPRED #if JVET_N0413_RDPCM - for (int uiMode = -2 * int(testBDPCM); uiMode < (int)uiRdModeList.size(); uiMode++) + for (int mode = -2 * int(testBDPCM); mode < (int)uiRdModeList.size(); mode++) { // set CU/PU to luma prediction mode ModeInfo uiOrgMode; - if (testBDPCM && uiMode < 0) + if (testBDPCM && mode < 0) { - cu.bdpcmMode = -uiMode; + cu.bdpcmMode = -mode; unsigned mpm_pred[NUM_MOST_PROBABLE_MODES]; PU::getIntraMPMs(pu, mpm_pred); @@ -1199,7 +1199,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, else { cu.bdpcmMode = 0; - uiOrgMode = uiRdModeList[uiMode]; + uiOrgMode = uiRdModeList[mode]; #else for (uint32_t uiMode = 0; uiMode < uiRdModeList.size(); uiMode++) { @@ -1360,7 +1360,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, if( !cu.ispMode && !cu.bdpcmMode && csBest->cost < bestCostNonBDPCM ) { bestCostNonBDPCM = csBest->cost; - bestNormalIntraModeIndex = uiMode; + bestNormalIntraModeIndex = mode; } #endif csTemp->releaseIntermediateData(); -- GitLab From 4b421958dd7825e5521dfd31e201bca682d460b2 Mon Sep 17 00:00:00 2001 From: Muhammed Coban <mcoban@qti.qualcomm.com> Date: Thu, 25 Apr 2019 16:45:22 -0700 Subject: [PATCH 2/2] RDPCM code cleanup. --- source/Lib/EncoderLib/IntraSearch.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp index 77869ae070..21c0ac5d25 100644 --- a/source/Lib/EncoderLib/IntraSearch.cpp +++ b/source/Lib/EncoderLib/IntraSearch.cpp @@ -1184,7 +1184,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, { // set CU/PU to luma prediction mode ModeInfo uiOrgMode; - if (testBDPCM && mode < 0) + if ( mode < 0 ) { cu.bdpcmMode = -mode; @@ -1221,7 +1221,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, CHECK(cu.ispMode && pu.multiRefIdx, "Error: combination of ISP and MRL not supported"); #else #if JVET_N0413_RDPCM - for( int uiMode = -2 * testBDPCM; uiMode < numModesForFullRD; uiMode++ ) + for( int mode = -2 * int(testBDPCM); mode < numModesForFullRD; mode++ ) #else for (uint32_t uiMode = 0; uiMode < numModesForFullRD; uiMode++) #endif @@ -1230,9 +1230,9 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, int multiRefIdx = 0; uint32_t uiOrgMode; - if (testBDPCM && uiMode < 0) + if ( mode < 0 ) { - cu.bdpcmMode = -uiMode; + cu.bdpcmMode = -mode; unsigned mpm_pred[NUM_MOST_PROBABLE_MODES]; PU::getIntraMPMs(pu, mpm_pred); pu.intraDir[0] = mpm_pred[0]; @@ -1242,12 +1242,12 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, else { cu.bdpcmMode = 0; - uiOrgMode = uiRdModeList[uiMode]; + uiOrgMode = uiRdModeList[mode]; #else // set luma prediction mode uint32_t uiOrgMode = uiRdModeList[uiMode]; #endif - cu.ispMode = extendRefList[uiMode] > MRL_NUM_REF_LINES ? extendRefList[uiMode] - MRL_NUM_REF_LINES : NOT_INTRA_SUBPARTITIONS; + cu.ispMode = extendRefList[mode] > MRL_NUM_REF_LINES ? extendRefList[mode] - MRL_NUM_REF_LINES : NOT_INTRA_SUBPARTITIONS; pu.intraDir[0] = uiOrgMode; #if !JVET_N0413_RDPCM @@ -1275,7 +1275,7 @@ void IntraSearch::estIntraPredLumaQT( CodingUnit &cu, Partitioner &partitioner, #if !JVET_N0217_MATRIX_INTRAPRED else { - multiRefIdx = extendRefList[uiMode]; + multiRefIdx = extendRefList[mode]; pu.multiRefIdx = multiRefIdx; #if !JVET_N0185_UNIFIED_MPM CHECK( pu.multiRefIdx && ( pu.intraDir[0] == DC_IDX || pu.intraDir[0] == PLANAR_IDX ), "ERL" ); -- GitLab