H264 profile-iop explained

TheMeaningfulEngineer picture TheMeaningfulEngineer · May 6, 2014 · Viewed 8.4k times · Source

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:

enter image description here

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.

Answer

nobody555 picture nobody555 · May 6, 2014

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.