Opened 5 years ago
Closed 5 years ago
#371 closed defect (fixed)
Avoid reading unused slice-level elements for joint coding of chroma residuals (JCCR) when sps_joint_cbcr_enabled_flag == 0
Reported by: | crhelmrich | Owned by: | |
---|---|---|---|
Priority: | trivial | Milestone: | VVC D6 vD |
Component: | spec | Version: | VVC D6 vC |
Keywords: | JCCR | Cc: | ksuehring, bbross, XiangLi, fbossen, jvet@… |
Description
The newly introduced sps_joint_cbcr_enabled_flag element is read even when a coded sequence does not contain any chroma components. Moreover, the slice_joint_cbcr_sign_flag and slice_joint_cbcr_qp_offset elements are read regardless of the value of sps_joint_cbcr_enabled_flag.
To correct this issue and for consistency with the handling of the already existing sps_cclm_enabled_flag element, I suggest the following modification and kindly ask for comments.
Best,
Christian
Table in Sec. 7.3.2.3:
Tor consistency with the current syntax handling of sps_cclm_enabled_flag, change
"sps_joint_cbcr_enabled_flag"
to
"if( ChromaArrayType != 0 )
sps_joint_cbcr_enabled_flag"
Table in Sec. 7.3.6.1:
To avoid reading unused elements when sps_joint_cbcr_enabled_flag == 0, change
"if( ChromaArrayType != 0 )
slice_joint_cbcr_sign_flag"
to
"if( sps_joint_cbcr_enabled_flag && ChromaArrayType != 0 )
slice_joint_cbcr_sign_flag"
and change
"slice_joint_cbcr_qp_offset"
to
"if( sps_joint_cbcr_enabled_flag )
slice_joint_cbcr_qp_offset"
Change history (4)
comment:1 Changed 5 years ago by crhelmrich
- Summary changed from Restrict presence of flags for joint coding of chroma residuals (JCCR) to "ChromaArrayType != 0" to Avoid reading unused slice-level elements for joint coding of chroma residuals (JCCR) when sps_joint_cbcr_enabled_flag == 0
comment:2 Changed 5 years ago by delagrangep
- I remember we had discussions during the meeting around gating PPS chroma QP offsets with chroma format or other, but refrained doing so to avoid SPS>PPS dependency. Actually, a note in the semantics explains that the QP offsets are not used in monochrome and joint offset is not used when sps_joint_cbcr_enabled_flag is zero.
- I also remember the discussion about keeping useless data in SPS in an effort to make it fixed-length, or simpler to parse
- I can't remember what was said about offsets in slice header.
I would suggest gating both slice_joint_cb_cr_sign_flag and slice_joint_cbcr_qp_offset with just sps_joint_cbcr_enabled_flag, and drop the "(ChromaArrayType == 0)" condition since it is somewhat redundant (sps_joint_cbcr_enabled_flag is expected to be false in monochrome).
comment:3 Changed 5 years ago by bbross
I agree, we decided only to gate SH syntax depending on chroma, see notes under JVET-O0616:
"It was noted that in HEVC we don’t do the suggested removals in the SPS, only one bit needs to be wasted for each of these.
Decision (bug fix / cleanup): Adopt the SH aspects only."
Therefore, I agree with the suggested fix:
Gating both slice_joint_cbcr_sign_flag and slice_joint_cbcr_qp_offset with sps_joint_cbcr_enabled_flag, and drop the "(ChromaArrayType != 0)" condition.
comment:4 Changed 5 years ago by bbross
- Resolution set to fixed
- Status changed from new to closed
Will be fixed in vD
Update: I was informed that the avoidance of an "if( ChromaArrayType != 0 )" around the SPS-level sps_joint_cbcr_enabled_flag element is intentional and according to decisions made at the meeting. The slice-level part of this ticket, however, is still worth being discussed according to my understanding. To repeat, I suggest the following.
Note that slice_joint_cbcr_sign_flag has just been adopted via JVET-O0105 at the Gothenburg meeting and, thus, wasn't accounted for in the JVET-O0376, aspect 2 proposal introducing sps_joint_cbcr_enabled_flag.
Table in Sec. 7.3.6.1:
Best,
Christian