Identify h264 profile and level from profile-level-id in sdp?
How does one identify what the constraints actually mean?
For example I have a profile-type-id: 42801e
that translates to:
How am I to relate that to the features defined in the table here?
The above reference identified that the Constraint_set0_flag: 1
means that it's the Constrained Baseline Profile. But how to relate the flag to the three different NO's (from the table) that differentiate the Baseline profile from the Constrained Baseline Profile?
Update
Can't confirm that the above, about identifying the Constrained Baseline profile
, is correct. Reference (page 306) for that statement:
Decoders conforming to the Constrained Baseline profile at a
specific level shall be capable of decoding all bitstreams
in which all of the following are true:
– profile_idc is equal to 66 or constraint_set0_flag is equal to 1,
– constraint_set1_flag is equal to 1,
– level_idc and constraint_set3_flag represent a level
less than or equal to the specified level.
It seems only the first condition is fulfilled but the second is false. The parameters for the Baseline profile state
Decoders conforming to the Baseline profile at a specific level shall be capable of decoding all bitstreams in which profile_idc is equal to 66 or constraint_set0_flag is equal to 1 and in which level_idc and constraint_set3_flag represent a level less than or equal to the specified level.
and they are both present.
Can you clarify your question? What exactly don't you understand? You have already parsed 42801e as Constrained Baseline Profile Level 3.0.
Constrained Baseline Profile identified by constraint_set0_flag=1 mean that encoded stream don't use any of the features outside of this profile (like FMO or ASO from wikipedia table) and so can be decoded with any decoder with support of Constrained Baseline, Main or High profiles. Streams encoded with Baseline Profile (not Constrained) Profile can use this additional features (or not use but still not be indicated as Constrained) but if they will be used in stream than decoders which support only Constrained Baseline, Main or High profiles wouldn't be able to decode it.
Update
I was wrong. It is Baseline Profile Level 3.0 because constraint_set1_flag=0 and so there is no indication of Constrained Baseline Profile.
Refer to following table from RFC 6184: Table 5. Combinations of profile_idc and profile-iop representing the same sub-profile corresponding to the full set of coding tools supported by one profile. In the following, x may be either 0 or 1, while the profile names are indicated as follows. CB: Constrained Baseline profile, B: Baseline profile, M: Main profile, E: Extended profile, H: High profile, H10: High 10 profile, H42: High 4:2:2 profile, H44: High 4:4:4 Predictive profile, H10I: High 10 Intra profile, H42I: High 4:2:2 Intra profile, H44I: High 4:4:4 Intra profile, and C44I: CAVLC 4:4:4 Intra profile.
Profile profile_idc profile-iop
(hexadecimal) (binary)
CB 42 (B) x1xx0000
same as: 4D (M) 1xxx0000
same as: 58 (E) 11xx0000
B 42 (B) x0xx0000
same as: 58 (E) 10xx0000
M 4D (M) 0x0x0000
E 58 00xx0000
H 64 00000000
H10 6E 00000000
H42 7A 00000000
H44 F4 00000000
H10I 6E 00010000
H42I 7A 00010000
H44I F4 00010000
C44I 2C 00010000
It is Baseline Profile Level 3.0.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With