Opened 5 months ago

#294 new defect

ALF disabling at slice and tile boundaries not working

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

Description

ALF is performed across tile or slice boundaries even when loop filtering across tile or slice boundaries is disabled.

to reproduce:

# ALF on, two slice columns, no LF across slice boundaries
bin/EncoderAppStatic -c cfg/encoder_randomaccess_vtm.cfg --OutputBitDepth=10 --OutputBitDepthC=10  --FramesToBeEncoded=10 --IntraPeriod=32 --Level=5.2 --QP=37 --FrameRate=30 --SourceHeight=768 --SourceWidth=512 --InputFile=Landing2_512x768_30Hz_10b_420.yuv --BitstreamFile=Landing2_512x768_QP37_noLFCrossSlices.vvc --ReconFile=Landing2_512x768_QP37_rec_enc_noLFCrossSlices.yuv  --InputBitDepth=10 --InputChromaFormat=420 --SEIDecodedPictureHash=1 --TileUniformSpacing=1 --NumTileColumnsMinus1=1 --NumTileRowsMinus1=0 --SliceMode=3 --SliceArgument=1    --LFCrossSliceBoundaryFlag=0  --LFCrossTileBoundaryFlag=1 --LoopFilterDisable=1 --SAO=0 --ALF=1

# ALF on, two slice columns,  LF across slice boundaries on
bin/EncoderAppStatic -c cfg/encoder_randomaccess_vtm.cfg --OutputBitDepth=10 --OutputBitDepthC=10  --FramesToBeEncoded=10 --IntraPeriod=32 --Level=5.2 --QP=37 --FrameRate=30 --SourceHeight=768 --SourceWidth=512 --InputFile=Landing2_512x768_30Hz_10b_420.yuv --BitstreamFile=Landing2_512x768_QP37_withLFCrossSlices.vvc --ReconFile=Landing2_512x768_QP37_rec_enc_withLFCrossSlices.yuv  --InputBitDepth=10 --InputChromaFormat=420 --SEIDecodedPictureHash=1 --TileUniformSpacing=1 --NumTileColumnsMinus1=1 --NumTileRowsMinus1=0 --SliceMode=3 --SliceArgument=1    --LFCrossSliceBoundaryFlag=1  --LFCrossTileBoundaryFlag=1 --LoopFilterDisable=1 --SAO=0 --ALF=1

# all LF on, two slice columns, no LF across slice boundaries
bin/EncoderAppStatic -c cfg/encoder_randomaccess_vtm.cfg --OutputBitDepth=10 --OutputBitDepthC=10  --FramesToBeEncoded=10 --IntraPeriod=32 --Level=5.2 --QP=37 --FrameRate=30 --SourceHeight=768 --SourceWidth=512 --InputFile=Landing2_512x768_30Hz_10b_420.yuv --BitstreamFile=Landing2_512x768_QP37_noLFCrossSlicesAllLF.vvc --ReconFile=Landing2_512x768_QP37_rec_enc_noLFCrossSlicesAllLF.yuv  --InputBitDepth=10 --InputChromaFormat=420 --SEIDecodedPictureHash=1 --TileUniformSpacing=1 --NumTileColumnsMinus1=1 --NumTileRowsMinus1=0 --SliceMode=3 --SliceArgument=1    --LFCrossSliceBoundaryFlag=0  --LFCrossTileBoundaryFlag=1 

# all  on, two slice columns,  LF across slice boundaries on
bin/EncoderAppStatic -c cfg/encoder_randomaccess_vtm.cfg --OutputBitDepth=10 --OutputBitDepthC=10  --FramesToBeEncoded=10 --IntraPeriod=32 --Level=5.2 --QP=37 --FrameRate=30 --SourceHeight=768 --SourceWidth=512 --InputFile=Landing2_512x768_30Hz_10b_420.yuv --BitstreamFile=Landing2_512x768_QP37_withLFCrossSlicesAllLF.vvc --ReconFile=Landing2_512x768_QP37_rec_enc_withLFCrossSlicesAllLF.yuv  --InputBitDepth=10 --InputChromaFormat=420 --SEIDecodedPictureHash=1 --TileUniformSpacing=1 --NumTileColumnsMinus1=1 --NumTileRowsMinus1=0 --SliceMode=3 --SliceArgument=1    --LFCrossSliceBoundaryFlag=1  --LFCrossTileBoundaryFlag=1 

I used the master branch (commit 988c22cbb9c58584cac3ef0ec7794cafbea6dfd6), but disabled JVET_N0857_TILES_BRICKS since I did not figure out yet how to configure slices when it is on.
When ALF is the only enabled loop filter, the output is the same (first two calls), but should be different.
When all LFs are enabled (second two calls) the difference can be clearly seen at the slice boundary

I attached the tiny test sequence I used. The configuration above splits the sequence in two columns, each of which is in a separate slice.

I also could not find the description of disabling ALF at slice or tile boundaries in the VVC Draft.

Change history (0)

Note: See TracTickets for help on using tickets.