Opened 4 years ago

Closed 4 years ago

#1186 closed defect (fixed)

Cannot decode a bitstream encoded with conformance cropping window

Reported by: vdrugeon Owned by:
Priority: minor Milestone:
Component: VTM Version:
Keywords: Cc: ksuehring, XiangLi, fbossen, jvet@…

Description

When RPR is not used, there is a constraint that the conformance cropping window has to be signalled in the SPS only. But the VTM encoder currently initializes the conformance cropping window in both SPS and PPS when one is given as input. So the bitstream is not decodable.

The following encoder command line creates a problematic bitstream:
./EncoderAppStatic -c ../cfg/encoder_randomaccess_vtm.cfg -c ../cfg/per-sequence/BlowingBubbles.cfg -f 1 -q 27 --SEIDecodedPictureHash=1 --ConformanceWindowMode=3 --ConfWinLeft=10 --ConfWinBottom=10

When trying to decode the bitstream, the decoder crashes with the following error:
ERROR: In function "parsePictureHeader" in /data/VTM_dev/CreateMergeRequests/source/Lib/DecoderLib/VLCReader.cpp:2633: When pic_width_in_luma_samples is equal to pic_width_max_in_luma_samples and pic_height_in_luma_samples is equal to pic_height_max_in_luma_samples, the value of pps_conformance_window_flag shall be equal to 0

This issue can be easily solved by removing the default initilisation of the PPS conformance cropping window in EncLib::init:

initialize PPS
pps0.setPicWidthInLumaSamples( m_iSourceWidth );
pps0.setPicHeightInLumaSamples( m_iSourceHeight );
pps0.setConformanceWindow( m_conformanceWindow );
xInitPPS(pps0, sps0);

This is not needed, since the conformance cropping window is initialised later on again when RPR is used.

Change history (3)

comment:2 Changed 4 years ago by fbossen

There was a pending merge request dealing with this:
https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM/-/merge_requests/1727

comment:3 Changed 4 years ago by vdrugeon

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

@Frank: Thank you, I did not realise that it was already adressed.
I will close my merge request.

Note: See TracTickets for help on using tickets.