Opened 6 years 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.