H264 主要包括Baseline, Ext,Main, High这几种常用profile和一些特殊用途的profies,如Constrain baseline, SVC,MVC和一系列high-Fidelity profiles 等等,各种profile是根据不同的应用场景设计的,具体余下:
Baseline主要是用于可视电话,会议电视,无线通讯等实时通信。要实时,就要减少视频decode和display的时延,所以没有B frame;为了提高针对网络丢包的容错能力,特意添加了FMO,ASO和冗余slice;
Main用于数字广播电视和数字视频存储,侧重点在于提高压缩率,所以有了CABAC,MBAFF,Interlace,B frame等。
Extend用于改进误码性能和码流切换(SP和SI slice),侧重于码流切换(SI,SP slice)和error resilience(数据分割)。
High主要用于高压缩效率和质量, 引入8x8 DCT,选择量化矩阵等。
Profile在SPS中的profile_id 是:
baseline: profile_idc = 66 or constraint_set0_flag = 1
constrain baseline: profile_idc = 66 && constraint_set1_flag = 1
main profile:profile_idc = 77 or constraint_set1_flag = 1
extend profile:profile_idc = 88 or constraint_set2_flag = 1
high profile:profile_idc = 100
High 10: profile_idc = 110
High 422: profile_idc = 122
High 444: profile_idc = 244
Multiview: profile_idc = 118
Stereo Hight: profile_idc = 128
各个不同profile的具体feature对比如下: