Opened 9 years ago

Closed 9 years ago

#387 closed defect (fixed)

Decoder crash when entropy slices and SAO are enabled

Reported by: shilin.xu Owned by:
Priority: minor Milestone: HM-6.1
Component: HM Version: HM-6.0
Keywords: Cc: fbossen, ksuehring, davidf, jct-vc@…


The HM-6.0rc1 decoder crashes when the entropy slice is enabled.

Attachments (1)

encoder_intra_main.cfg (10.2 KB) - added by shilin.xu 9 years ago.
The config files used to reproduce the bug

Download all attachments as: .zip

Change History (6)

comment:1 Changed 9 years ago by DefaultCC Plugin

  • Cc fbossen ksuehring davidf jct-vc@… added

Changed 9 years ago by shilin.xu

The config files used to reproduce the bug

comment:2 Changed 9 years ago by ksuehring

  • Version changed from HM-6.0rc1 to HM-6.0

comment:3 Changed 9 years ago by ksuehring

This seems to be related to the SAO_UNIT_INTERLEAVING. When the macro is disabled coding seems to work again.

comment:4 Changed 9 years ago by davidf

A quick look reveals the initial issue to be a lack of propagating SAO flags from one entropy slice object to the next:

/usr/bin/time  /users/davidf/project/build/jctvc-hm-amd64/jctvc-tmuc-enc-hm-6.0-0-ge8cc204-tags-hm-6.0 \
                -c ~/project/jctvc-hm/@//cfg//encoder_intra_main.cfg \
                -c ~/project/jctvc-hm/@//cfg//per-sequence/RaceHorses.cfg \
                --InputFile=/users/davidf/work/video/RaceHorses_416x240_30.yuv \
                --BitstreamFile=out.bit \
                --ReconFile=out.bit.yuv \
                --FramesToBeEncoded=1 --EntropySliceMode=1 --EntropySliceArgument=1 --SourceWidth=128 --SourceHeight=128
POC    0 TId: 0 ( I-SLICE, nQP 32 QP 32 )      28352 bits [Y 31.5484 dB    U 32.2214 dB    V 32.0423 dB] [ET     1 ] [L0 ] [L1 ] [MD5:8b32d27801e4c5cf7c04a4a9dfc6651f]

Decoder checking:

valgrind --db-attach=yes --track-origins=yes  --malloc-fill=aa /users/davidf/project/build/jctvc-hm-amd64/jctvc-tmuc-dec-hm-6.0-0-ge8cc204-tags-hm-6.0 \
                --BitstreamFile=out.bit \
                --ReconFile=out.bit.decoded.yuv \

HM software: Decoder Version [6.0][Linux][GCC 4.6.1][64 bit] 
TDecCavlc::parsePPS():  m_bUseWeightPred=0      m_uiBiPredIdc=0
==5233== Conditional jump or move depends on uninitialised value(s)
==5233==    at 0x483F3D: TDecSlice::decompressSlice(TComInputBitstream*, TComInputBitstream**, TComPic*&, TDecSbac*, TDecSbac*) (TDecSlice.cpp:302)
==5233==    by 0x47A3C1: TDecGop::decompressGop(TComInputBitstream*, TComPic*&, bool) (TDecGop.cpp:292)
==5233==    by 0x48AB16: TDecTop::xDecodeSlice(InputNALUnit&, int, int) (TDecTop.cpp:713)
==5233==    by 0x48AEC4: TDecTop::decode(InputNALUnit&, int&, int&) (TDecTop.cpp:847)
==5233==    by 0x405253: TAppDecTop::decode() (TAppDecTop.cpp:145)
==5233==    by 0x402F1D: main (decmain.cpp:79)

And in the debugger:

0x0000000000483f3d in TDecSlice::decompressSlice (this=0x7fefff200, pcBitstream=0x5be6e20, ppcSubstreams=0x5beb0a0, 
    rpcPic=@0x7fefffaa8, pcSbacDecoder=0x7fefff2b8, pcSbacDecoders=0x5beb0f8)
    at /users/davidf/project/jctvc-hm//.git/../@/source/Lib/TLibDecoder/TDecSlice.cpp:302
302         if ( pcSlice->getSPS()->getUseSAO() && pcSlice->getSaoInterleavingFlag() && pcSlice->getSaoEnabledFlag() )
(gdb) print pcSlice->getSaoInterleavingFlag()
$1 = 170
(gdb) print pcSlice->getSaoEnabledFlag()
$2 = 170

Where 170 (0xaa) is the uninitialized value from malloc().

comment:5 Changed 9 years ago by davidf

  • Milestone set to HM-6.1
  • Resolution set to fixed
  • Status changed from new to closed
  • Summary changed from Decoder crash when entropy slice is enabled to Decoder crash when entropy slices and SAO are enabled

Resolved by r2096

Note: See TracTickets for help on using tickets.

This list contains all users that will be notified about changes made to this ticket.

These roles will be notified: Reporter, Owner, Subscriber, Participant

  • David Flynn(Subscriber, Participant)
  • Frank Bossen(Subscriber)
  • jct-vc@…(Subscriber)
  • karl.sharman@…(Always)
  • Karsten Suehring(Subscriber, Participant, Always)
  • Shilin Xu(Reporter)