Opened 5 years ago

Closed 5 years ago

#244 closed defect (fixed)

Wrong CABAC bin type classification when RExt__DECODER_DEBUG_BIT_STATISTICS is enabled

Reported by: peterchuang Owned by:
Priority: minor Milestone: VTM-5.0
Component: VTM Version: VTM-4.2
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

When RExtDECODER_DEBUG_BIT_STATISTICS is enabled, the decoder can collect the bin statistic of each syntax element, e.g. how may context-coded bins and how many bypass-coded bins are used for a certain syntax element.

In "CABACReader::residual_coding_subblock", the bin-type of dec_abs_level syntax is not assigned. So the bypass bins of dec_abs_level might be classified as the bypass bins of sig_coeff_flag, abs_level_gt1_flag, or abs_level_gt3_flag.
One line of code should be added as the following patch (on top of 2a709903020e3b215ada12b0c4281141c7f83891 [2a70990]).

---

source/Lib/DecoderLib/CABACReader.cpp | 1 +
1 file changed, 1 insertion(+)

diff --git a/source/Lib/DecoderLib/CABACReader.cpp b/source/Lib/DecoderLib/CABACReader.cpp
index 3b3724c..d8f14ab 100644
--- a/source/Lib/DecoderLib/CABACReader.cpp
+++ b/source/Lib/DecoderLib/CABACReader.cpp
@@ -3078,6 +3078,7 @@ void CABACReader::residual_coding_subblock( CoeffCodingContext& cctx, TCoeff* co

int rice = g_auiGoRiceParsCoeff [sumAll];
int pos0 = g_auiGoRicePosCoeff0[std::max(0, state - 1)][sumAll];
int rem = m_BinDecoder.decodeRemAbsEP( rice, cctx.extPrec(), cctx.maxLog2TrDRange() );

+ RExtDECODER_DEBUG_BIT_STATISTICS_SET(ctype_escs);

DTRACE( g_trace_ctx, D_SYNTAX_RESI, "rem_val() bin=%d ctx=%d\n", rem, rice );
TCoeff tcoeff = ( rem == pos0 ? 0 : rem < pos0 ? rem+1 : rem );
state = ( stateTransTable >> ((state<<2)+((tcoeff&1)<<1)) ) & 3;

--

Change history (1)

comment:1 Changed 5 years ago by XiangLi

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.