Opened 6 years ago

Closed 6 years ago

#160 closed defect (fixed)

Windows debug release version coding results not the same for some frames

Reported by: zhaoyin Owned by:
Priority: major Milestone: VTM-4.0
Component: VTM Version:
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

Note: Debug and release results are the same for most sequences.
It is also noticed that the header info is not the same in debug and release produced bitstream.

Using commit 68cf1ee on master branch

EncoderApp.exe -c ./cfg/encoder_randomaccess_vtm.cfg -c ./cfg/BasketballPass.cfg --ReconFile= -fr 50 -ip 48 --SEIDecodedPictureHash=1 --PrintHexPSNR=1 -q 32 -f 1 -fs 48 -b str_RA_BasketballPass_qp32_ras0.bin

Debug version results:
VVCSoftware: VTM Encoder Version 3.2 [Windows][VS 1916][64 bit] [SIMD=AVX2]

TOOL CFG: IBD:1 HAD:1 RDQ:1 RDQTS:1 RDpenalty:0 LQP:0 SQP:0 ASR:1 MinSearchWindow:96 RestrictMESampling:0 FEN:1 ECU:0 FDM:1 CFM:0 ESD:0 TransformSkip:1 TransformSkipFast:1 TransformSkipLog2MaxSize:5 Slice: M=0 CIP:0 SAO:1 ALF:1 PCM:0 TransQuantBypassEnabled:0 WPP:0 WPB:0 PME:2 WaveFrontSynchro:0 WaveFrontSubstreams:1TMVPMode:1 DQ:1 SignBitHidingFlag:0 RecalQP:0
NEXT TOOL CFG: Affine:1 AffineType:1 SubPuMvp:1+0 DualITree:1 LargeCTU:1 IMV:2 BIO:1 DisMDC:0 MTT:1 LMChroma:1 CclmCollocatedChroma:0 MTS: 1(intra) 0(inter) SBT:1 CompositeLTReference:0 GBi:1 GBiFast:1 LADF:0 MHIntra:1 Triangle:1 AllowDisFracMMVD:1 AffineAmvr:1 AffineAmvrEncOpt:1 DMVR:1 IBC:0 HashME:0 WrapAround:0 Reshape:1 (Sigal:SDR )
FAST TOOL CFG: LCTUFast:1 FastMrg:1 PBIntraFast:1 IMV4PelFast:1 MTSMaxCand: 3(intra) 4(inter) AMaxBT:1 E0023FastEnc:1 ContentBasedFastQtbt:0 NumSplitThreads:1 NumWppThreads:1+0 EnsureWppBitEqual:0

started @ Sun Feb 3 14:58:43 2019

POC 0 TId: 0 ( I-SLICE, QP 29 ) 43856 bits [Y 39.0522 dB U 42.0542 dB V 42.3060 dB] [xY 404386ae9dad3088 xU 404506ef93ced1ea xV 4045272ba1ea01ab] [ET 234 ] [L0 ] [L1 ] [MD5:20589124e2f570f6cb4d748fb470524a,09ef0ed938b8977772ead7d2b67e7266,68992fe946fedde91540a3e953e350b0]

Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR xY-PSNR xU-PSNR xV-PSNR

1 a 2192.8000 39.0522 42.0542 42.3060 39.8669 404386ae9dad3088 404506ef93ced1ea 4045272ba1ea01ab

finished @ Sun Feb 3 15:02:37 2019
Total Time: 234.464 sec. [user] 234.465 sec. [elapsed]

Release version encoding results:
VVCSoftware: VTM Encoder Version 3.2 [Windows][VS 1916][64 bit] [SIMD=AVX2]

TOOL CFG: IBD:1 HAD:1 RDQ:1 RDQTS:1 RDpenalty:0 LQP:0 SQP:0 ASR:1 MinSearchWindow:96 RestrictMESampling:0 FEN:1 ECU:0 FDM:1 CFM:0 ESD:0 TransformSkip:1 TransformSkipFast:1 TransformSkipLog2MaxSize:5 Slice: M=0 CIP:0 SAO:1 ALF:1 PCM:0 TransQuantBypassEnabled:0 WPP:0 WPB:0 PME:2 WaveFrontSynchro:0 WaveFrontSubstreams:1TMVPMode:1 DQ:1 SignBitHidingFlag:0 RecalQP:0
NEXT TOOL CFG: Affine:1 AffineType:1 SubPuMvp:1+0 DualITree:1 LargeCTU:1 IMV:2 BIO:1 DisMDC:0 MTT:1 LMChroma:1 CclmCollocatedChroma:0 MTS: 1(intra) 0(inter) SBT:1 CompositeLTReference:0 GBi:1 GBiFast:1 LADF:0 MHIntra:1 Triangle:1 AllowDisFracMMVD:1 AffineAmvr:1 AffineAmvrEncOpt:1 DMVR:1 IBC:0 HashME:0 WrapAround:0 Reshape:1 (Sigal:SDR )
FAST TOOL CFG: LCTUFast:1 FastMrg:1 PBIntraFast:1 IMV4PelFast:1 MTSMaxCand: 3(intra) 4(inter) AMaxBT:1 E0023FastEnc:1 ContentBasedFastQtbt:0 NumSplitThreads:1 NumWppThreads:1+0 EnsureWppBitEqual:0

started @ Sun Feb 3 14:58:41 2019

POC 0 TId: 0 ( I-SLICE, QP 29 ) 43672 bits [Y 39.0806 dB U 42.3186 dB V 42.2229 dB] [xY 40438a4fcc448d05 xU 404528c8cdfc7f86 xV 40451c8782ac8388] [ET 19 ] [L0 ] [L1 ] [MD5:762e52c2636626c132cec38a644feeb0,3e15118c2ffecc6bbaee01e6e40f30d8,abc4961a793c1fcc2b2a2cb4648b94cc]

Total Frames | Bitrate Y-PSNR U-PSNR V-PSNR YUV-PSNR xY-PSNR xU-PSNR xV-PSNR

1 a 2183.6000 39.0806 42.3186 42.2229 39.9077 40438a4fcc448d05 404528c8cdfc7f86 40451c8782ac8388

finished @ Sun Feb 3 14:59:01 2019
Total Time: 19.493 sec. [user] 19.493 sec. [elapsed]

Change history (4)

comment:1 Changed 6 years ago by zhaoyin

I traced the difference is from quantization. The transform coeffs are the same in debug and release, but after quantization, the number of quantized coeff are different.

The following print gives different results in debug and release.

  inline void State::updateState(const ScanInfo &scanInfo, const State *prevStates, const Decision &decision)
  {
    m_rdCost = decision.rdCost;
    if( decision.prevId > -2 )
    {
      if( decision.prevId >= 0 )
      {
        const State*  prvState  = prevStates            +   decision.prevId;
        m_numSigSbb             = prvState->m_numSigSbb + !!decision.absLevel;
        m_refSbbCtxId           = prvState->m_refSbbCtxId;
        m_sbbFracBits           = prvState->m_sbbFracBits;
#if PRINT_CU2
        printf("\n xxx scanInfo.scanIdx %d [%d %d %d]", scanInfo.scanIdx, decision.absLevel, decision.prevId, (int)decision.rdCost);
        printf("\ndecision.prevId %d m_sbbFracBits.intBits[0] %d", decision.prevId, m_sbbFracBits.intBits[0]);
#endif
        m_remRegBins            = prvState->m_remRegBins - 1;
        m_goRicePar             = prvState->m_goRicePar;

debug:

xxx scanInfo.scanIdx 991 [1 3 -1328190]

decision.prevId 3 m_sbbFracBits.intBits[0] 9702

release:

xxx scanInfo.scanIdx 991 [1 3 -1481546]

decision.prevId 3 m_sbbFracBits.intBits[0] 132573

However, I cannot find the direct cause.

comment:2 Changed 6 years ago by XiangLi

It looks the issue has been fixed with MRs on memory issues. Could reporter confirm?

comment:3 Changed 6 years ago by zhaoyin

The debug/release results mismatch issue is fixed.

comment:4 Changed 6 years ago by XiangLi

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