Profile、Tier 和 Level 的概念
HEVC 中定义了三类 Profile: Main、Main10 和 Main Still Picture。
Profile 指出码流中使用了哪些编码工具和算法。
Levle 指出一些对解码端的负载和内存占用影响较大的关键参数约束。主要包括采样率、分辨率、码率的最大 值,压缩率的最小值,DPB 的容量,CPB(解码缓冲区)的大小。
在 HEVC 的设计中,应用可以只依据最大的码率和 CPB 大小就可以区分。为了解决这个问题,有些 Level 定义了 两个 Tier——Main Tier 用于大多数应用,High Tier 用于那些最苛刻的应用。
HEVC 标准定义了两类 Tiers(Main 和 High) 和 13 类 Levels。不同的Tiers和Levels对maximum bit rate
maximum luma sample rate
maximum luma picture size
minimum compression ratio
maximum number of slices
和maximum number of tiles
等。
HEVC SPEC 中 Profile Tier Level 语法
profle_tier_level(profilePresentFlag, maxNumSubLayersMinus1){ | Descriptor |
---|---|
if(profilePresentFlag){ | |
general_profile_space | u(2) |
general_tier_flag | u(1) |
general_profile_idc | u(5) |
for(j = 0; j < 32; j++) | |
general_profile_compatibility_flag[i] | u(1) |
general_progressive_source_flag | u(1) |
general_interlaced_source_flag | u(1) |
… | |
general_level_idc | u(8) |
… |
- general_profile_idc 当
general_profile_space
等于 0,该值表明了profile
的标准,它的值必须是Annex A
中包含的值,其他值未定义,保留。 - general_level_idc 表明该视频流遵守的 level 值,它是在
Annex A
中定义的。码流中不应包含Annex A
中未定义的值。
注意,
general_level_idc
值越大,表示更高的 level。同一个CVS
中,码流中VPS
指定的最大 level 可能大于SPS
指定的最大 level。
HM 中 Profile Tier Level 实现
HM 中关于 ProfileTierLevel 的定义如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
|