Opened 10 years ago Closed 7 years ago #1348 closed defect (fixed)Inconsistency in HEVC spec and between the spec and HM
Description
We found some inconsistency in HEVC spec and between the spec and HM software. We would appreciate if someone can help to clarify them.
1.Use of “concatenation_flag”:
2.The setting of “nuh_temporal_id_plus1”:
For HEVC VPS and SPS parameters “sps_max_dec_pic_buffering_minus1[i]”, and “sps_num_reorder_pics[i]” (same things for “vps_” as well), they are coded in HM encoder functions CodeSPS() and CodeVPS(). The related variables NumReorderPics and MaxDecPicBuffering of layer i are set the same value of the involved layer index, i.e. “i”, which can be seen by tracing all the code w/ key words “setNumReorderPics” and “setMaxDecPicBuffering”. This setting, however, violates w/ the value constraint of vps/sps_max_num_reorder_pics[i] as stated in HEVC spec 7.4.3.1 and 7.4.3.2, where it basically says max_num_reorder_pics[i] has to be in the range of 0 to max_dec_pic_buffering_minus1[i], inclusive. Now, the current HM setting value of NumReorderPics is equal to the value of MaxDecPicBuffering, which will violate the constraint as stated in the spec.
========== Change History (5)comment:1 Changed 10 years ago by DefaultCC Plugin
comment:2 Changed 10 years ago by ykcomment:3 Changed 10 years ago by gaow02
Replied by WG
Please see our reply embedded in your comments.
The first two points are about the text only, not between text and
concatenation_flag in D.3.2 are contradicting with the equation in C.2.3?
[reply]: The suggested change for D.3.2 text below au_cpb_removal_delay_delta_minus1 is shown as follows.
When the current picture contains a buffering period SEI message and concatenation_flag is equal to 0 [Herein, should be 1] and the current picture is not the first picture in the bitstream in decoding order, it is a requirement of bitstream conformance that the following constraint applies:
– If the picture prevNonDiscardablePic is not associated with a buffering period SEI message, the au_cpb_removal_delay_minus1 of the current picture shall be equal to the au_cpb_removal_delay_minus1 of prevNonDiscardablePic plus au_cpb_removal_delay_delta_minus1 + 1.
– Otherwise, au_cpb_removal_delay_minus1 shall be equal to au_cpb_removal_delay_delta_minus1.
NOTE 3 – When the current picture contains a buffering period SEI message and concatenation_flag is equal to 1 [Herein, should be 0], the au_cpb_removal_delay_minus1 for the current picture is not used.
a non-VCL NAL unit applies to. A PPS can be present in the very first AU
[Reply]: One possible counter example for the non-VCL TemporalId prescription in Section 7.4.2.2. may be as follows.
A non-VCL unit is contained by an AU w/ TemporalId >0 (e.g. 2), while it is not applied to its containing AU, but some subset of the following AUs, among which the minimum TemporalId is a value smaller than its containing AU’s TemporalId (e.g. the minimum TemporalId is 0). In this case, the conformance to the last sentence before Note 9, and the conformance to the first sentence of Note 9, would be conflicting each other.
Would this example be possible from the spec? If not, what prescriptions on the use of non-VCL unit can fully prevent it? ….
FYI, the last sentence before Note 9 and Note 9 in Section 7.4.2.2 on non-VCL TemporalId is attached as follows:
– Otherwise, TemporalId shall be greater than or equal to the TemporalId of the access unit containing the NAL unit.
NOTE 9 – When the NAL unit is a non-VCL NAL unit, the value of TemporalId is equal to the minimum value of the TemporalId values of all access units to which the non-VCL NAL unit applies. When nal_unit_type is equal to PPS_NUT, TemporalId may be greater than or equal to the TemporalId of the containing access unit, as all PPSs may be included in the beginning of a bitstream, wherein the first coded picture has TemporalId equal to 0. When nal_unit_type is equal to PREFIX_SEI_NUT or SUFFIX_SEI_NUT, TemporalId may be greater than or equal to the TemporalId of the containing access unit, as an SEI NAL unit may contain information, e.g. in a buffering period SEI message or a picture timing SEI message, that applies to a bitstream subset that includes access units for which the TemporalId values are greater than the TemporalId of the access unit containing the SEI NAL unit.
[Reply] Also, regarding this non-VCL TemporalId conformance, one question to the current HM encoder is that: from the spec, there cannot find any difference between buffering period and picture timing SEI messages on that. But in current HM encoder, buffering period SEI NAL unit is always hard-forced set its TemporalId to be 0, but not the TemporalId from its containing AU. HM encoder sets the TemporalId of its picture timing SEI to be the TemporalId of its containing AU, which is as prescribed in the spec. So, for HM encoder buffering period SEI, is it implicitly assuming that: its containing AU (i.e. an I-slice) will always be having TemoralId = 0? If so, is this assumption valid from the spec? … comment:4 Changed 10 years ago by yk
Hi Wen,
I think the wording regarding the equation in C.2.3 involving concatenationFlag and the semantics wording in D.2.3 are consistent, and the values of 0 and 1 should not be swapped as you suggested below. Maybe Lihua or Gary could double check (Lihua and Gary were the proponents of the concatenation_flag).
Regarding the 2nd point on non-VCL NAL unit location: the example you gave (a non-VCL NAL unit having TemporalId less than the TemporalId of the containing AU) is disallowed by the entire sentence before the Note 9 unless nal_unit_type is equal to EOS_NUT or EOB_NUT. The entire sentence is copied below for convenience:
The value of TemporalId for non-VCL NAL units is constrained as follows:
Note that notes in the spec are only for information, they don’t define conformance. And to my current understanding, there is nothing wrong with the note 9 – though improvement suggestions are always welcome.
BR, YK comment:5 Changed 7 years ago by bbross
As discussed as part of the ticket, there is nothing wrong in the specification text. The third aspect of the comment regarding the inconsistency between HM encoder and HEVC specification was checked against current HM and the mismatch is fixed. Note: See
TracTickets for help on using
tickets. | This list contains all users that will be notified about changes made to this ticket. These roles will be notified: Reporter, Owner, Subscriber, Participant
|
Thanks!
The first two points are about the text only, not between text and software. It would have been clearer to people on the list to use another thread, as some people may have never touched the software though played a lot with the text :-)