Opened 6 years ago
Last modified 6 years ago
#97 closed defect
ALF CTU control flag(s) issue — at Initial Version
Reported by: | bbross | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | VVC D3 v2 |
Component: | spec | Version: | VVC D3 v1 |
Keywords: | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
Current Draft and VTM have 3 flags (alf_ctb_flag[cIdx]) to control ALF on CTU level for each colour component.
However, there has been some discussion of whether this is covered by the Ljubljana meeting decisions on ALF:
"Decision(VTM): Adopt JVET-K0371 (based on subtest 2.4.1.4c, 4x4 classification based on Laplacian for luma only, 7x7 luma, 5x5 chroma filters); disable prediction of adaptive filters from fixed filter set; disable temporal prediction; put filter parameters into slice header; Enabling flag at CTU level."
Having separate flags for luma and chroma at the slice level does not imply that separate flags are needed for luma and chroma at the CTB level. The recorded decision refers to a CTU, which is a unit that contains both luma and chroma and would presumably switch the filtering on or off for both of them at the same time.
Consequently, the draft text should be changed as follows to match that interpretation:
Slice Header:
slice_alf_enabled_flag
if ( slice_alf_enabled_flag )
alf_chroma_idc
alf_chroma_ctb_present_flag
alf_ctu_adaptive_flag
When alf_ctu_adaptive_flag is not present, it is inferred to be equal to 0.
CTU:
if( slice_alf_enabled_flag ) {
alf_ctb_flag[0]
if( alf_chroma_ctb_present_flag ) {
if( alf_chroma_idx & 0x1 )
alf_ctb_flag[1]
if( alf_chroma_idx & 0x2 )
alf_ctb_flag[2]
}
}
if( alf_ctu_adaptive_flag )
ctu_alf_enabled_flag
When ctu_alf_enabled_flag is not present, it is inferred as follows.
– If slice_alf_enabled_flag, ctu_alf_enabled_flag is inferred to be equal to 1.
– Otherwise, ctu_alf_enabled_flag is inferred to be equal to 0.
The variables CtbAlfFlag[ cIdx ] for cIdx equal to 0..2 are derived as follows:
CtbAlfFlag[ 0 ] = ctu_alf_enabled_flag
CtbAlfFlag[ 1 ] = ctu_alf_enabled_flag && ( alf_chroma_idc & 0x1 )
CtbAlfFlag[ 2 ] = ctu_alf_enabled_flag && ( alf_chroma_idc & 0x1 )