H264规定了三种主要档次,每个档次支持一组特定的编码功能,并支持一类特定的应用。
1、基本档次(Baseline Profile):利用I片和P片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAvlc)。主要用于可视电话、会议电视、无线通信等实时视频通信。
2、主要档次(Main Profile):支持隔行视频,采用B片的帧间编码和采用加权预测的帧间编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储。
3、扩展档次(Extended Profile):支持码流之间有效的切换(SP和SI片)、改进误码性能,但不支持隔行视频和CABAC。
x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ) :/X264/encoder/set.c
if( sps->b_qpprime_y_zero_transform_bypass )//判断码率控制方法是否是恒定质量方法并且量化值初始为0
sps->i_profile_idc = PROFILE_HIGH444;///*自定义量化矩阵(CQM),初始化量化模式为flat 0*/ //param->analyse.b_transform_8x8 = 1; /* 帧间分区*/
else if( param->analyse.b_transform_8x8 || param->i_cqm_preset != X264_CQM_FLAT )
sps->i_profile_idc = PROFILE_HIGH;
else if( param->b_cabac || param->i_bframe > 0 )
sps->i_profile_idc = PROFILE_MAIN;
else
sps->i_profile_idc = PROFILE_BASELINE;