Opened 6 years ago

Closed 5 years ago

#270 closed defect (fixed)

Mismatch encode decode

Reported by: forayr Owned by:
Priority: minor Milestone: VVC D5 v8
Component: spec Version: VVC D5 v7
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

Regression starting from f4d113c1 (JVET-N0349: decoding parameter set (DPS)).
Vtm crash when decoding some streams.
For example:

git clone ​https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM.git vtm
git checkout f4d113c1
mkdir vtm/build && cd vtm/build && cmake .. && make -j8 && cd ../bin
./EncoderAppStatic --SourceWidth=56 --SourceHeight=48 --InputChromaFormat=420 --InputBitDepth=10 --Profile=next --FrameRate=60 --FramesToBeEncoded=1 --GOPSize=4 '--Frame1=B 1 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 -1 -5 -9 -13 0' '--Frame2=B 2 4 -6.5 0.2590 0 0 1.0 0 0 0 4 4 -1 -2 -6 -10 1 -1 5 1 1 1 0 1' '--Frame3=B 3 5 -6.5 0.2590 0 0 1.0 0 0 0 4 4 -1 -3 -7 -11 1 -1 5 0 1 1 1 1' '--Frame4=B 4 1  0.0 0.0    0 0 1.0 0 0 0 4 4 -1 -4 -8 -12 1 -1 5 0 1 1 1 1' --FastSearch=1 --LumaLevelToDeltaQPMode=0 --MaxCUWidth=16 --MaxCUHeight=24 -i source.yuv -b stream.vvc
./DecoderAppStatic -b stream.vvc

VVCSoftware: VTM Decoder Version 5.0 [Linux][GCC 8.3.0][64 bit] [SIMD=AVX2]
terminate called after throwing an instance of 'Exception'

what():

ERROR: In function "read" in ../../../../../vtm/source/Lib/CommonLib/BitStream.cpp:293: Exceeded FIFO size

Attachments (1)

source.yuv (7.9 KB) - added by forayr 6 years ago.

Download all attachments as: .zip

Change history (7)

Changed 6 years ago by forayr

comment:1 Changed 6 years ago by ksuehring

  • Component changed from VTM to spec

It's actually a specification bug:

After adding sps_video_parameter_set_id to the SPS, in this configuration the first two bytes of the SPS are equal to zero.

The second byte of the the NAL unit header is defined as:

	nuh_layer_id              u(7)
	nuh_reserved_zero_bit     u(1)

So with nuh_layer_id equal to zero, this is the third zero byte in a row, which leads to a start code emulation, because the NAL unit header is not included in the start code emulation prevention.

We usually avoid such start code emulations by not allowing the last NAL unit header byte to be equal to zero.

In this case, it could easily be achieved by changing nuh_reserved_zero_bit to nuh_reserved_one_bit

But since there is a intention to give this bit a meaning later, it may make more sense to increase nuh_layer_id, i.e. nuh_layer_id_plus1

comment:2 Changed 6 years ago by ksuehring

I submitted MR 559 with the suggested nuh_layer_id_plus1solution

https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/merge_requests/559

Last edited 6 years ago by ksuehring (previous) (diff)

comment:3 Changed 6 years ago by bbross

  • Version set to VVC D5 v6

comment:4 Changed 5 years ago by bbross

  • Version changed from VVC D5 v6 to VVC D5 v7

comment:5 Changed 5 years ago by bbross

  • Milestone set to VVC D5 v8

comment:6 Changed 5 years ago by bbross

  • Resolution set to fixed
  • Status changed from new to closed

Fixed in D5 v8

Note: See TracTickets for help on using tickets.