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;?