Opened 2 months ago

Last modified 7 weeks ago

#485 new defect

Editorial: Splitting slice_alf_chroma_idc into two flags

Reported by: ksuehring Owned by:
Priority: minor Milestone:
Component: spec Version: VVC D6 vE
Keywords: ALF, HLS Cc: ksuehring, bbross, XiangLi, fbossen, jvet@…

Description

For improved clarity I would suggest to split slice_alf_chroma_idc into two flags: slice_alf_cb_flag and slice_alf_cr_flag

The low bit of the idc already indicates ALF usage in Cr, while the high bit indicates usage in Cb:

slice_alf_chroma_idc equal to 0 specifies that the adaptive loop filter is not applied to Cb and Cr colour components. slice_alf_chroma_idc equal to 1 indicates that the adaptive loop filter is applied to the Cb colour component. slice_alf_chroma_idc equal to 2 indicates that the adaptive loop filter is applied to the Cr colour component. slice_alf_chroma_idc equal to 3 indicates that the adaptive loop filter is applied to Cb and Cr colour components. When slice_alf_chroma_idc is not present, it is inferred to be equal to 0.

This be split without technical change into:

slice_alf_cb_flag equal to 0 specifies that the adaptive loop filter is not applied to Cb colour components. slice_alf_cb_flag equal to 1 indicates that the adaptive loop filter is applied to the Cb colour component. When slice_alf_cb_flag is not present, it is inferred to be equal to 0.

slice_alf_cr_flag equal to 0 specifies that the adaptive loop filter is not applied to Cr colour components. slice_alf_cr_flag equal to 1 indicates that the adaptive loop filter is applied to the Cr colour component. When slice_alf_cr_flag is not present, it is inferred to be equal to 0.

The depending syntax conditions:

		if( slice_alf_chroma_idc  = =  1  | |  slice_alf_chroma_idc  = =  3 ) {
			alf_ctb_flag[ 1 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
			if( alf_ctb_flag[ 1 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
				&&  aps_alf_chroma_num_alt_filters_minus1 > 0 )
				alf_ctb_filter_alt_idx[ 0 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
		}
		if( slice_alf_chroma_idc  = =  2  | |  slice_alf_chroma_idc  = =  3 ) {
			alf_ctb_flag[ 2 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
			if( alf_ctb_flag[ 2 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
				&&  aps_alf_chroma_num_alt_filters_minus1 > 0 )
				alf_ctb_filter_alt_idx[ 1 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
		}

can be simplified to

		if( slice_alf_cb_flag ) {
			alf_ctb_flag[ 1 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
			if( alf_ctb_flag[ 1 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
				&&  aps_alf_chroma_num_alt_filters_minus1 > 0 )
				alf_ctb_filter_alt_idx[ 0 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
		}
		if( slice_alf_cr_flag ) {
			alf_ctb_flag[ 2 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
			if( alf_ctb_flag[ 2 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
				&&  aps_alf_chroma_num_alt_filters_minus1 > 0 )
				alf_ctb_filter_alt_idx[ 1 ][ xCtb >> CtbLog2SizeY ][ yCtb >> CtbLog2SizeY ]
		}

Change history (1)

comment:1 Changed 7 weeks ago by yk

To me, this looks like a technical improvement, not a bug fix, not purely editorial, thus it'd be better to submit a proposal IMO.

Note: See TracTickets for help on using tickets.