profile和level
profile和level是视频编码中两个很重要的概率,中文一般叫做档次和级别。
在MPEG2标准里边,按不同的压缩比分成五个档次,按视频清晰度分为四个级别,如下图所示:
档次和级别共有 20 种组合,最常用的为其中的 11 种组合,分别用于标准数字电视、高清晰度电视,码率从 4Mbps 到 100Mbps。一般在实际应用中根据使用场景,结合平台编码能力的大小来配置档次和级别。比如可以根据编码的分辨率,码率来选择级别,根据上图,720分辨率选ML级别,1080分辨率就要高级一点的级别,选HL。
可以这么理解:档次定义了编码工具的集合,级则定义了比特流参数的限制。
H.264 规定了多种种档次,每个档次支持一组特定的编码功能,并支持一类特定的应用。常见的有以下三种
1)基本档次Baseline Profile (BP):利用 I 片和 P 片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码
进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;
2)主要档次Main Profile (MP):支持隔行视频,采用 B片的帧间编码和采用加权预测的帧内编码;支持利用基于 上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;
3)扩展档次Extended Profile (XP):支持码流之间有效的切换(SP 和 SI 片)、改进误码性能(数据分割),但不支持 隔行视频和 CABAC。
下图为 H.264 各个档次具有的不同功能,可见扩展档次包括了基本档次的所有功能,而不能包
括主要档次的。每一档次设置不同参数(如取样速率、图像尺寸、编码比特率,图片位深度,图片格式等),得到编解码器性能不同的级。
H264各档次支持的功能集如下:
这里举个例子,假如要对位深度为10的yuv420格式图片进行编码,要怎么选档次呢?首先从上表可以看出,各种档次都支持4:2:0编码,然后看一下哪些档次支持10 bit sample depth,那么必须是HIGH10以上的档次,(high10 支持9 and 10 bit sample depth)
h264 level:
表中列出了各个级别支持的每秒最大宏块数量,每帧最大的宏块数量,不同档次的最大的比特率,已经不同档次下支持的最大分辨率等信息。
H265/HEVC Profile Level Tier
为了提供不同应用之间的兼容互通,HEVC/H265 定义了不同的编码 Profile 档次、Level 水平、Tier 等级。
(1)profile 规定了码流中使用了哪些编码工具和算法
(2)Level 中规定了对给定 Profile、Tier所对应的解码器处理负担和存储容量参数,主要包括采样率、分辨率、码率的最大值、压缩率的最小值、解码图像缓存区的容量(DPB)、编码图像缓存区的容量(CPB)等。
(3)Tier规定了每个水平的码率的高低。
在编解码器的兼容性方面,要求H265支持某个profile的解码器必须支持该Profile及低于该Profile中的所有特性;要求支持某个Level和Tier的解码器可以解码所有等于和低于这个Level和Tier的码流; 在H265编码器中,支持某一个Profile的编码器,并不要求它支持该Profile的所有特性,但是编码的码流必须符合HEVC的标准,才可被支持该Profile的解码器所解码。
H265 Profile 的支持: 常用的三个Main profile,即常规8bit像素精度的Main profile,支持10bit像素精度的Main 10 profile和支持静止图像的Main Still Picture profile。
其中range extensions是对应hevc version 2