[Mp4-tech] Questions about constraint flags
Gary Sullivan
garysull windows.microsoft.com
Tue Jun 20 19:40:47 EDT 2006
Regarding 2 - Please notice that:
a) The text says that "constraint_set2_flag indicates that the bitstream
obeys all constraints specified in subclause A.2.3".
b) One of the constraints in subclause A.2.3 is that "The syntax
elements chroma_format_idc, bit_depth_luma_minus8,
bit_depth_chroma_minus8, qpprime_y_zero_transform_bypass_flag, and
seq_scaling_matrix_present_flag shall not be present in sequence
parameter sets."
c) Furthermore, notice from the syntax tables in subclause 7.3.2.1 show
that those syntax elements MUST be present if profile_idc indicates the
High profile.
It is therefore not possible to fulfill all constraints in A.2.3 when
profile_idc indicates the High profile, and therefore
constraint_set2_flag must be equal to 0 in that case.
This is a matter in the process of further clarification (see the most
recent published ITU-T version vs. the most recent published MPEG
version, for example).
Regarding 4 - My remarks assumed you were talking about taking an
existing bitstream (in general, produced by someone else's encoder) and
changing the value of profile_idc in it. It wasn't about the case when
an encoder is producing a bitstream that will not be repurposed later.
If you are only concerned about cases where you are producing the
bitstream yourself, this aspect may not apply (although my remark #3
would still apply).
Best Regards,
-Gary Sullivan
________________________________
From: EricChuang via.com.tw [mailto:EricChuang via.com.tw]
Sent: Tuesday, June 20, 2023 6:16 PM
To: Gary Sullivan; mp4-tech lists.mpegif.org
Subject: RE: [Mp4-tech] Questions about constraint flags
Hi Gary,
Regarding 2), I did not read any statements explicitly to have
the requirement that these flags set to 0 in Hgih profile. It seems to
me that If a High profile bitstream set the constraint_set2_flag to 1,
some decoder conforming to Main profile cannot decode it correctly,
because there are more syntax element in SPS that may not be understood
by the Main profile decoder. Is it the reason that these flags set to 0
in high profile ?
About 4) I cannot understand why it's difficult to change
profile_idc without constraint flags existence. Since the profile_idc
and constraint flag are set by encoder, if an encoder could be able to
set the constraint flag, it can change the profile accordingly if it
wants.
I really appreciate your comment on this, I got lot from it. I'm
not just for implementation purposes, I wish to know more, so I'd like
to know the reason behind it.
Thanks very much,
Eric.
-----Original Message-----
From: Gary Sullivan [mailto:garysull windows.microsoft.com]
Sent: Tuesday, June 20, 2023 10:16 AM
To: Eric Chuang; mp4-tech lists.mpegif.org
Subject: RE: [Mp4-tech] Questions about constraint flags
Eric et al,
1) Be careful about conceptually lumping all of those flags
together. constraint_set3_flag is quite different than the others.
2) You seem to have made a mistake regarding High profile. When
profile_idc indicates High profile (profile_idc equal to 100), all four
of those flags must be equal to 0.
3) For constraint_set0_flag, constraint_set1_flag, and
constraint_set2_flag, these enable decoders of multiple profiles to be
able to decode the same bitstream. If these flags did not exist and you
changed the value of profile_idc in a bitstream, then decoders of the
original profile would not decode the bitstream, even though they could
as far as the set of features used in the bitstream are concerned. It
is obviously desirable to enable as many decoders as possible to decode
a bitstream.
4) Furthermore, in the absence of these flags it could be very
difficult to determine whether a bitstream obeys all the constraints
that would allow profile_idc to be changed. This is particularly true
regarding some constraints that are not obvious from examining headers,
such as the MaxSubMbRectSize constraint that applies only in the
Baseline and Extended profiles.
5) For the Baseline, Main, and Extended profiles,
constraint_set3_flag was used to insert a level 1b in between levels 1
and 1.1 in a backward-compatible fashion. This could be difficult to do
if we had not reserved some syntax for such uses.
6) Note that some uses of these flags remain reserved for future
uses yet to be determined. The flags can be very useful for future
extensibility.
7) Note that reserved_zero_4bits contains four more bits that
can be defined as flags or other such syntax elements for future
extensibility purposes.
8) For implementation purposes, it is not really necessary to
have a good answer to questions about why things in a standard are the
way they are. It is more important to understand "what" the standard
says than "why" it says what it says.
Best Regards,
Gary Sullivan
________________________________
From: mp4-tech-bounces lists.mpegif.org
[mailto:mp4-tech-bounces lists.mpegif.org] On Behalf Of
EricChuang via.com.tw
Sent: Tuesday, June 20, 2023 6:28 AM
To: mp4-tech lists.mpegif.org
Subject: [Mp4-tech] Questions about constraint flags
Dear experts,
I have a question about the constraint_set0_flag,
constraint_set1_flag, ... constraint_set3_flag. I have no idea why this
kind of flag is used for. The same restriction can be achieved by
changing the profile_idc.
It seems that these flags can be used to indicate it
conforms to baseline, main, or exteded profile, etc.. even if the
profile_idc indicates it's high profile. Why not just changing the
profile_idc, and created these 4 constraint flags ?
Thanks,
Eric
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/mp4-tech/attachments/20060620/1698811d/attachment-0001.html
More information about the Mp4-tech
mailing list