Opened 5 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)
Change history (7)
Changed 5 years ago by forayr
comment:1 Changed 5 years ago by ksuehring
- Component changed from VTM to spec
comment:2 Changed 5 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
comment:3 Changed 5 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.
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:
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