x264中重要結構體參數解釋,參數設置,函數說明 <轉>


x264中重要結構體參數解釋
http://www.usr.cc/thread-51995-1-3.html
x264參數設置
http://www.usr.cc/thread-51996-1-3.html


x264中重要結構體參數解釋
typedef struct x264_param_t
{
/* CPU 標志位 */
unsigned int cpu;
int         i_threads;       /* 並行編碼多幀 */
int         b_deterministic; /*是否允許非確定性時線程優化*/
int         i_sync_lookahead; /* 線程超前緩沖 */

/* 視頻屬性 */
int         i_width; /* 寬度*/
int         i_height; /* 高度*/
int         i_csp;  /* 編碼比特流的CSP,僅支持i420,色彩空間設置 */ csp:視頻采樣格式
int         i_level_idc; /* level值的設置*/
int         i_frame_total; /* 編碼幀的總數, 默認 0 */
/*Vui參數集視頻可用性信息視頻標准化選項 */
struct
{
/* they will be reduced to be 0 < x <= 65535 and prime */
int         i_sar_height;
int         i_sar_width; /* 設置長寬比 */

int         i_overscan;    /* 0=undef, 1=no overscan, 2=overscan 過掃描線,默認"undef"(不設置),可選項:show(觀看)/crop(去除)*/

/*見以下的值h264附件E */
Int       i_vidformat;/* 視頻格式,默認"undef",component/pal/ntsc/secam/mac/undef*/
int       b_fullrange; /*Specify full range samples setting,默認"off",可選項:off/on*/
int       i_colorprim; /*原始色度格式,默認"undef",可選項:undef/bt709/bt470m/bt470bg,smpte170m/smpte240m /film*/
int   i_transfer; /*轉換方式,默認"undef",可選項:undef/bt709/bt470m/bt470bg/linear,log100/log316 /smpte170m/smpte240m*/
int  i_colmatrix; /*色度矩陣設置,默認"undef",undef/bt709/fcc/bt470bg,smpte170m/smpte240m/GBR /YCgCo*/
int         i_chroma_loc;    /* both top & bottom色度樣本指定,范圍0~5,默認0 */
} vui;

int         i_fps_num;
int         i_fps_den;
/*這兩個參數是由fps幀率確定的,賦值的過程見下:
{        float fps;       
if( sscanf( value, "%d/%d", &p->i_fps_num, &p->i_fps_den ) == 2 )
;
else if( sscanf( value, "%f", &fps ) )
{
p->i_fps_num = (int)(fps * 1000 + .5);
p->i_fps_den = 1000;
}
else
b_error = 1;
}
Value的值就是fps。*/

/*流參數 */
int         i_frame_reference;  /* 參考幀最大數目 */
int         i_keyint_max;       /* 在此間隔設置IDR關鍵幀 */
int         i_keyint_min;       /* 場景切換少於次值編碼位I, 而不是 IDR. */
int         i_scenecut_threshold; /*如何積極地插入額外的I幀 */
int         i_bframe;   /*兩個相關圖像間b幀的數目 */
int         i_bframe_adaptive; /*自適應B幀判定*/
int         i_bframe_bias; /*控制插入B幀判定,范圍-100~+100,越高越容易插入B幀,默認0*/
int         b_bframe_pyramid;   /*允許部分B為參考幀 */
/*去塊濾波器需要的參數*/
int         b_deblocking_filter;
int         i_deblocking_filter_alphac0;    /* [-6, 6] -6 light filter, 6 strong */
int         i_deblocking_filter_beta;       /* [-6, 6]  idem */
/*熵編碼 */
int         b_cabac;
int         i_cabac_init_idc;

int         b_interlaced; /* 隔行掃描 */
/*量化 */
int         i_cqm_preset;         /*自定義量化矩陣(CQM),初始化量化模式為flat*/
char        *psz_cqm_file;      /* JM format讀取JM格式的外部量化矩陣文件,自動忽略其他—cqm 選項*/
uint8_t     cqm_4iy[16];        /* used only if i_cqm_preset == X264_CQM_CUSTOM */
uint8_t     cqm_4ic[16];
uint8_t     cqm_4py[16];
uint8_t     cqm_4pc[16];
uint8_t     cqm_8iy[64];
uint8_t     cqm_8py[64];

/* 日志 */
void        (*pf_log)( void *, int i_level, const char *psz, va_list );
void        *p_log_private;
int         i_log_level;
int         b_visualize;
char        *psz_dump_yuv;  /* 重建幀的名字 */

/* 編碼分析參數*/
struct
{
unsigned int intra;     /* 幀間分區*/
unsigned int inter;     /* 幀內分區 */

int          b_transform_8x8; /* 幀間分區*/
int          b_weighted_bipred; /*為b幀隱式加權 */
int          i_direct_mv_pred; /*時間空間隊運動預測 */
int          i_chroma_qp_offset; /*色度量化步長偏移量 */

int          i_me_method; /* 運動估計算法 (X264_ME_*) */
int          i_me_range; /* 整像素運動估計搜索范圍 (from predicted mv) */
int          i_mv_range; /* 運動矢量最大長度(in pixels). -1 = auto, based on level */
int          i_mv_range_thread; /* 線程之間的最小空間. -1 = auto, based on number of threads. */
int          i_subpel_refine; /* 亞像素運動估計質量 */
int          b_chroma_me; /* 亞像素色度運動估計和P幀的模式選擇 */
int          b_mixed_references; /*允許每個宏塊的分區在P幀有它自己的參考號*/
int          i_trellis;  /* Trellis量化,對每個8x8的塊尋找合適的量化值,需要CABAC,默認0 0:關閉1:只在最后編碼時使用2:一直使用*/
int          b_fast_pskip; /*快速P幀跳過檢測*/
int          b_dct_decimate; /* 在P-frames轉換參數域 */
int          i_noise_reduction; /*自適應偽盲區 */
float        f_psy_rd; /* Psy RD strength */
float        f_psy_trellis; /* Psy trellis strength */
int          b_psy; /* Toggle all psy optimizations */

/*,亮度量化中使用的無效區大小*/
int          i_luma_deadzone[2]; /* {幀間, 幀內} */

int          b_psnr;    /* 計算和打印PSNR信息 */
int          b_ssim;    /*計算和打印SSIM信息*/
} analyse;

/* 碼率控制參數 */
struct
{
int         i_rc_method;    /* X264_RC_* */

int         i_qp_constant;  /* 0-51 */
int         i_qp_min;       /*允許的最小量化值 */
int         i_qp_max;       /*允許的最大量化值*/
int         i_qp_step;      /*幀間最大量化步長 */

int         i_bitrate;  /*設置平均碼率 */
float       f_rf_constant;  /* 1pass VBR, nominal QP */
float       f_rate_tolerance;
int         i_vbv_max_bitrate; /*平均碼率模式下,最大瞬時碼率,默認0(與-B設置相同) */
int         i_vbv_buffer_size; /*碼率控制緩沖區的大小,單位kbit,默認0 */
float       f_vbv_buffer_init; /* <=1: fraction of buffer_size. >1: kbit碼率控制緩沖區數據保留的最大數據量與緩沖區大小之比,范圍0~1.0,默認0.9*/
float       f_ip_factor;
float       f_pb_factor;

int         i_aq_mode;      /* psy adaptive QP. (X264_AQ_*) */
float       f_aq_strength;
int         b_mb_tree;      /* Macroblock-tree ratecontrol. */
int         i_lookahead;

/* 2pass 多次壓縮碼率控制 */
int         b_stat_write;   /* Enable stat writing in psz_stat_out */
char        *psz_stat_out;
int         b_stat_read;    /* Read stat from psz_stat_in and use it */
char        *psz_stat_in;

/* 2pass params (same as ffmpeg ones) */
float       f_qcompress;    /* 0.0 => cbr, 1.0 => constant qp */
float       f_qblur;        /*時間上模糊量化 */
float       f_complexity_blur; /* 時間上模糊復雜性 */
x264_zone_t *zones;         /* 碼率控制覆蓋 */
int         i_zones;        /* number of zone_t's */
char        *psz_zones;     /*指定區的另一種方法*/
} rc;

/* Muxing parameters */
int b_aud;                  /*生成訪問單元分隔符*/
int b_repeat_headers;       /* 在每個關鍵幀前放置SPS/PPS*/
int i_sps_id;               /* SPS 和 PPS id 號 */

/*切片(像條)參數 */
int i_slice_max_size;    /* 每片字節的最大數,包括預計的NAL開銷. */
int i_slice_max_mbs;     /* 每片宏塊的最大數,重寫 i_slice_count */
int i_slice_count;       /* 每幀的像條數目: 設置矩形像條. */

/* Optional callback for freeing this x264_param_t when it is done being used.
* Only used when the x264_param_t sits in memory for an indefinite period of time,
* i.e. when an x264_param_t is passed to x264_t in an x264_picture_t or in zones.
* Not used when x264_encoder_reconfig is called directly. */
void (*param_free)( void* );
} x264_param_t; 




X264的參數設置

由於x264本身的算法問題,該參數在1pass下很難符合設定要求,如果要嚴格控制最好使用2pass

我一般用的DVDrip參數是這樣

級別:3.1
參考幀:動畫6~8,電影3~4,越高編碼越慢,解碼占內存越多,對動畫的畫質提高很明顯
運動估算模式:slow(一般也叫umh)
運動估算半徑:16或12,越大越慢(影響很明顯),畫質提升效果不明顯
B幀:3或更高(可設到最大16,編碼器會自動選擇,對速度基本無影響),另外高級里把b_pyramid設為true。如果用 mencoder編碼就不要設太大了,有bug。
子像素優化:6或7,大了可減少文件體積,但編碼速度變慢。
其他設置用默認,另外最新版x264里加入的vaq功能對畫質有很大影響,但MediaCoder里還沒加入設置的地方,需要手工輸入參數。

BDRip一般要考慮硬件加速的問題,所以限制比較多,對於1080p:
級別 4.1
參考幀=4,B幀=0
或者
參考幀=3,B幀=3,b_pyramid=false
高了播放時無法開啟硬件加速

如果覺得編碼速度太慢,可優先減少運動估算半徑(8甚至4),然后是子像素優化(3~4)。

使用格式:x264 默認選項 -o 輸出文件 輸入文件 [長x寬]
輸入支持格式:RAW/y4m/avi/avs(編譯時可選)
輸出支持格式:264/mkv/mp4(編譯時可選)

x264的許多參數可以有-/--兩種輸入法,筆者也不知道為什么。以下等價參數用“參數1/參數2 <必需數值格式>”表示,參數尾部()內為個人推薦。

-h/--help 幫助

幀類型選項:

-I/--keyint <整數> 最大IDR幀間距,默認250
-i/--min-keyint <整數> 最小IDR幀間距,默認25
--scenecut <整數> 畫面動態變化限,當超出此值時插入I幀,默認40
-b/--bframes <整數>     在IP幀之間可插入的B幀數量最大值,范圍0~16,默認0
--no-b-adapt            關閉自適應B幀判定(-b設為1時可用,其他不推薦)
--b-bias <整數> 控制插入B幀判定,范圍-100~+100,越高越容易插入B幀,默認0
--b-pyramid             允許B幀做參考幀
--no-cabac              關閉內容自適應二進制算術編碼(CABAC,高效率的熵編碼)(會提高速度,但嚴重影響質量)
-r/--ref <整數>         最大參考幀數,范圍0~16,默認1
--nf                    關閉環路濾波(一種除馬賽克算法)
-f/--filter <alpha:beta>設置環路濾波的AlphaC和Beta的參數,范圍-6-6,默認都為0

碼率控制選項:

-q/--qp <整數> 固定量化模式並設置使用的量化值,范圍0~51,0為無損壓縮,默認26
-B/--bitrate <整數> 設置平均碼率
--crf <整數> 質量模式,量化值動態可變(目前不太成熟,質量不如設置固定量化值)
--qpmin <整數> 設置最小量化值,范圍0~51,默認10
--qpmax <整數> 設置最大量化值,范圍0~51,默認51
--qpstep <整數> 設置相鄰幀之間的量化值差,范圍0~50,默認4
--ratetol <小數> 平均碼率模式下,瞬時碼率可以偏離的倍數,范圍0.1~100.0,默認1.0
--vbv-maxrate <整數> 平均碼率模式下,最大瞬時碼率,默認0(與-B設置相同)
--vbv-bufsize <整數> 碼率控制緩沖區的大小,單位kbit,默認0
--vbv-init <小數> 碼率控制緩沖區數據保留的最大數據量與緩沖區大小之比,范圍0~1.0,默認0.9

--ipratio <小數> I幀和P幀之間的量化系數,默認1.40
--pbratio <小數> P幀和B幀之間的量化系數,默認1.30
--chroma-qp-offset <整數> 色度和亮度之間的量化差,范圍-12~+12,默認0

-p/--pass <1|2|3> 多次壓縮碼率控制
1:第一次壓縮,創建統計文件
2:按建立的統計文件壓縮並輸出,不覆蓋統計文件,
3:按建立的統計文件壓縮,優化統計文件
--stats <字符串> 統計文件的名稱,默認"x264_2pass.log"
--rceq <字符串> 速率控制公式,默認"blurCplx^(1-qComp)"
--qcomp <小數> 線性量化控制,0.0為固定碼率,1.0為固定量化值,默認0.6,只用於2-pass和質量模式
--cplxblur <小數> 根據相鄰幀平滑量化值比例的最大值,范圍0~99.9,默認20.0,只用於2-pass和質量模式
--qblur <小數> 對統計文件結果平滑量化值比例的最大值,范圍0~99.9,默認0.5,只用於2-pass

--zones <z0>/<z1>/… 分段量化,格式為:<開始幀>,<結束幀>,<選項>,可選項為:q=<整數>(量化值)或b=& lt;小數>(碼率倍數)

--qpfile<字符串> 幀定義,可以在文件里定義每個幀的種類和Q值

分析選項:

-A/--analyse <字符串> 動態塊划分方法,默認"p8x8,b8x8,i8x8,i4x4"。可選項:p8x8/p4x4/b8x8/i8x8/i4x4;none /all(p4x4需要p8x8. i8x8需要--8x8dct)
--direct <字符串>       動態預測方式,默認"spatial"。可選項:none/spatial/temporal/auto
-w/--weightb 允許B幀加權預測(可以減少相鄰B幀質量低的影響)
--me <字符串> 對全像素塊動態預測搜索的方式,默認"hex",可選項:
dia:菱形搜索,半徑1 (快)
hex:正六邊形搜索,半徑2
umh:可變半徑六邊形搜索
esa:全面搜索(很慢,而且效果與umh幾乎相同)
--merange <整數> --me為umh/esa時的搜索半徑,最大64,默認16
-m/--subme <整數> 動態預測和分區方式,可選項1~7,默認5(與壓縮質量和時間關系密切,1是7速度的四倍以上)
1:用全像素塊進行動態搜索,對每個塊再用快速模式進行四分之一像素塊精確搜索
2:用半像素塊進行動態搜索,對每個塊再用快速模式進行四分之一像素塊精確搜索
3:用半像素塊進行動態搜索,對每個塊再用質量模式進行四分之一像素塊精確搜索
4:用快速模式進行四分之一像素塊精確搜索
5:用質量模式進行四分之一像素塊精確搜索
6:進行I、P幀像素塊的速率失真最優化(rdo)
7:進行I、P幀運動矢量及塊內部的速率失真最優化(質量最好)
--b-rdo B幀也進行rdo,需要--subme在6以上
--mixed-refs 可以在一幀內使用不同參考幀
--no-chroma-me 不進行色度的動態預測
--bime 可以平均B幀參考塊的運動矢量
-8/--8x8dct 可以使用8x8的離散余弦變換(DCT)
-t/--trellis <整數>     Trellis量化,對每個8x8的塊尋找合適的量化值,需要CABAC,默認0
0:關閉
1:只在最后編碼時使用
2:一直使用
--no-fast-pskip 關閉快速P幀跳過檢測
--no-dct-decimate       關閉P幀聯合編碼(可以增加細節,但也會增大體積)
--nr <整數> 噪聲去除,范圍0~100000,默認0

--cqm <字符串> 設置外部量化矩陣格式,默認"flat",可選項:jvt/flat
--cqmfile <字符串> 讀取JM格式的外部量化矩陣文件,自動忽略其他--cqm*選項
--cqm4 <list> 設置4x4的量化矩陣,用逗號分開,范圍1~255的16個整數
--cqm8 <list> 設置8x8的量化矩陣,用逗號分開,范圍1~255的64個整數
--cqm4i/--cqm4p/--cqm8i/--cqm8p 設置I、P幀不同的量化矩陣
--cqm4iy/--cqm4ic/--cqm4py/--cqm4pc 設置亮度、色度不同的量化矩陣

視頻標准化選項:
這些選項與編碼無關,不過如果要用mp4之類的播放器,可以設置,風險自擔

--sar width:height 設置長寬比
--overscan <字符串> 過掃描線,默認"undef"(不設置),可選項:show(觀看)/crop(去除)
--videoformat <字符串> 視頻格式,默認"undef",可選項:component/pal/ntsc/secam/mac/undef
--fullrange <字符串>    Specify full range samples setting,默認"off",可選項:off/on(我也不明白這是干什么的,請高手指點)
--colorprim <字符串>    原始色度格式,默認"undef",可選項:undef/bt709/bt470m/bt470bg,smpte170m/smpte240m/film
--transfer <字符串>     轉換方式,默認"undef",可選項:undef/bt709/bt470m/bt470bg/linear,log100/log316 /smpte170m/smpte240m
--colormatrix <字符串> 色度矩陣設置,默認"undef",undef/bt709/fcc/bt470bg,smpte170m/smpte240m/GBR/YCgCo
--chromaloc <整數> 色度樣本指定,范圍0~5,默認0

輸入、輸出選項:

--level <字符串> 設定等級(as defined by Annex A)(不明白,請高手指點)
--fps <小數|rational> 設定幀率
--seek <整數> 設定起始幀
--frames <整數> 最大編碼幀數
-o/--output 指定輸出文件

--threads <整數> 編碼線程(使用分片技術)
--thread-input 在自有線程中運行Avisynth
--no-asm 關閉全部CPU優化指令
--no-psnr 關閉PSNR計算
--quiet 安靜模式
-v/--verbose 顯示每一個幀的信息
--progress 顯示編碼進程
--visualize 顯示編碼幀信息圖,和XVID類似
--sps-id <整數> 設置SPS和PPS的ID值,默認0
--aud 使用數據定義符號



x264函數說明
函數名稱                                  所在位置                               完成功能 
void x264_frame_filter                                     common\mc.c                                                  幀濾波 
void x264_frame_init_lowres                           common\mc.c                                                  亮度1/2像素值初始化 
void x264_mc_init                                          common\mc.c                                                  運動估計初始化 
static void motion_compensation_chroma      common\mc.c                                                  色度運動估計 
static uint8_t *get_ref                                     common\mc.c                                                  獲取參考亮度像素 
static void mc_luma                                         common\mc.c                                                 亮度運動估計 
  common\mc.c   
void    x264_param_default                           common\common.c                                           設置缺省參數 
void x264_log                                                common\common.c                                          定義log級別 
static void x264_log_default                           common\common.c                                          設置缺省日志參數 
void x264_picture_alloc                                 common\common.c                         設置picture參數,根據輸出圖像格式分配空間 
void x264_picture_clean                                common\common.c                                         釋放分配的圖像空間 
int x264_nal_encode                                     common\common.c                                             nal單元編碼 
int x264_nal_decode                                      common\common.c                                            nal單元解碼 
void *x264_malloc                                         common\common.c                                     X264內部定義的內存分配 
void x264_free                                               common\common.c                                           X264內存釋放 
void *x264_realloc                                         common\common.c                                     X264重新分配圖像空間 
void x264_reduce_fraction                            common\common.c                                              分數化簡 
char *x264_slurp_file                                     common\common.c                                     將文件讀入分配的緩存區 
char *x264_param2string                              common\common.c                           轉換參數為字符串,返回字符串存放的地址
void x264_cabac_context_init                       common\cabac.c                                        CABAC上下文取值表初始化 
void x264_cabac_decode_init                        common\cabac.c                                            CABAC解碼流初始化 
static inline void x264_cabac_decode_renorm common\cabac.c                                           CABAC解碼重新標准化 
int  x264_cabac_decode_decision                  common\cabac.c   
int  x264_cabac_decode_bypass                   common\cabac.c   
int  x264_cabac_decode_terminal                  common\cabac.c   
void x264_cabac_encode_init                        common\cabac.c   
static inline void x264_cabac_putbit                common\cabac.c   
static inline void x264_cabac_encode_renorm common\cabac.c   
void x264_cabac_encode_decision                 common\cabac.c   
void x264_cabac_encode_bypass                  common\cabac.c   
void x264_cabac_encode_terminal                 common\cabac.c   
void x264_cabac_encode_flush                      common\cabac.c   
void x264_cabac_size_decision                       common\cabac.c   
int x264_cabac_size_decision2                       common\cabac.c   
int 264_cabac_size_decision_noup                 common\cabac.c   
static inline int clip_uint8                                 common\dct.c clip3(x,0,255) 
static void dct2x2dc                                      common\dct.c                          2*2直流系數的Hadamard變換 以4*4變換為基static void dct4x4dc                                     common\dct.c                          4*4DC系數的Hadamard變換 
static void idct4x4dc                                    common\dct.c            每行每列一維蝶形快速算法,完成d[4][4]的Hadamard反變換 
static void sub4x4_dct                                common\dct.c                                    對4*4殘差進行DCT變換 
static void sub8x8_dct                                common\dct.c                                 對8*8殘差進行DCT變換 
static void sub16x16_dct                            common\dct.c                                 對16*16殘差進行DCT變換 
static void add4x4_idct                              common\dct.c                         殘差塊DCT反變換后,加到預測塊上,重構4*4塊 
static void add8x8_idct                              common\dct.c                           殘差塊DCT反變換后,加到預測塊上,重構8*8塊 
static void add16x16_idct                          common\dct.c                         殘差塊DCT反變換后,加到預測塊上,重構16*16塊 
void x264_dct_init                                     common\dct.c                                             DCT運算初始化 
static void quant_8x8_core                       common\quant.c                                         8*8 AC量化 
static void quant_4x4_core                       common\quant.c                                        4*4 AC量化 
static void quant_4x4_dc_core                common\quant.c                                         4*4 亮度DC量化 
static void quant_2x2_dc_core                common\quant.c                                         2*2 色度DC量化 
static void dequant_4x4                          common\quant.c                                          4*4 AC反量化 
static void dequant_8x8                          common\quant.c                                          8*8 AC反量化 
void x264_mb_dequant_2x2_dc            common\quant.c                                          2*2 色度DC反量化 
void x264_mb_dequant_4x4_dc           common\quant.c                                           4*4 亮度DC反量化 
void x264_quant_init                             common\quant.c                                           量化參量初始化 
x264_frame_t *x264_frame_new          common\frame.c                                             創建新幀 
void x264_frame_delete                         common\frame.c                                           刪除幀,釋放空間 
void x264_frame_copy_picture             common\frame.c                                         將圖像拷貝到幀中 
static void plane_expand_border           common\frame.c                                邊界擴展(被其他具體的擴展函數調用) 
void x264_frame_expand_border         common\frame.c                                                幀邊界擴展 
void x264_frame_expand_border_filtered common\frame.c                                     為濾波進行的邊界擴展 
void x264_frame_expand_border_lowres common\frame.c                               為計算亮度半像素值進行邊界擴展 
void x264_frame_expand_border_mod16 common\frame.c                                幀邊界不是16整數倍時進行邊界擴展 
static inline void deblock_luma_c           common\frame.c                                    bs=1~3時,修正亮度MB邊界的p0和q0值 
static void deblock_v_luma_c               common\frame.c                                         亮度分量垂直邊界去塊濾波 
static void deblock_h_luma_c               common\frame.c                                           亮度分量水平邊界去塊濾波 
static inline void deblock_chroma_c      common\frame.c                                      bs=1~3時,修正色度MB邊界的p0和q0值 
static void deblock_v_chroma_c          common\frame.c                                            色度分量垂直邊界去塊濾波 
static void deblock_h_chroma_c          common\frame.c                                           色度分量水平邊界去塊濾波 
static inline void deblock_luma_intra_c  common\frame.c                                          bs=4時,修正亮度MB邊界的值 
static void deblock_v_luma_intra_c      common\frame.c                                           幀內亮度分量垂直邊界去塊濾波 
static void deblock_h_luma_intra_c      common\frame.c                                          幀內亮度分量水平邊界去塊濾波 
static inline void deblock_chroma_intra_c common\frame.c                                        bs=4時,修正色度MB邊界的值 
static void deblock_v_chroma_intra_c  common\frame.c                                          幀內色度分量垂直邊界去塊濾波 
static void deblock_h_chroma_intra_c  common\frame.c                                          幀內色度分量水平邊界去塊濾波 
static inline void deblock_edge              common\frame.c                                           bs值確定 
void x264_frame_deblocking_filter       common\frame.c                                           幀去塊濾波主函數 
void x264_deblock_init                        common\frame.c                                           去塊濾波初始化 
int x264_mb_predict_intra4x4_mode  common\macroblock.c                                  幀內4*4塊模式預測 
int x264_mb_predict_non_zero_code  common\macroblock.c                                      非零 
int x264_mb_transform_8x8_allowed  common\macroblock.c                               判斷當前宏塊是否允許8*8變換 
void x264_mb_predict_mv                  common\macroblock.c                                        宏塊運動矢量預測 
void x264_mb_predict_mv_16x16      common\macroblock.c                                       16*16塊MV預測 
void x264_mb_predict_mv_pskip         common\macroblock.c                                          Pskip塊MV預測 
static int x264_mb_predict_mv_direct16x16_temporal common\macroblock.c              直接模式16*16塊MV時間預測 
static int x264_mb_predict_mv_direct16x16_spatial common\macroblock.c                 直接模式16*16塊MV空間預測 
int x264_mb_predict_mv_direct16x16 common\macroblock.c                                     直接模式16*16塊MV預測 
void x264_mb_load_mv_direct8x8 common\macroblock.c                                           直接模式8*8塊MV加載 
void x264_mb_predict_mv_ref16x16   common\macroblock.c                                          16*16參考塊MV預測 
static inline void x264_mb_mc_0xywh  common\macroblock.c                                         前向宏塊運動補償 
static inline void x264_mb_mc_1xywh  common\macroblock.c                                        后向宏塊運動補償 
static inline void x264_mb_mc_01xywh common\macroblock.c                                          宏塊雙向運動補償 
static void x264_mb_mc_direct8x8         common\macroblock.c                                   直接模式8*8塊運動補償 
void x264_mb_mc_8x8                       common\macroblock.c                                    各種類型8*8塊及其分割的運動補償 
void x264_mb_mc                               common\macroblock.c                                各種類型塊運動補償(調用以上各MC子函數) 
void x264_macroblock_cache_init        common\macroblock.c                                  初始化表征宏塊的各變量,分配內存空間
void x264_macroblock_cache_end       common\macroblock.c                                      釋放為宏塊分配的cache空間 
void x264_macroblock_slice_init            common\macroblock.c                                          初始MB與slice映射關系 
void x264_macroblock_cache_load       common\macroblock.c                                   宏塊cache加載,所有宏塊表征變量賦值 
void x264_macroblock_cache_save      common\macroblock.c                                          保存cache中的變量值 
void x264_macroblock_bipred_init        common\macroblock.c                                               宏塊雙向預測初始化 
int64_t x264_pixel_ssd_wxh                 common\pixel.c                                                          計算像素差值平方和 
static inline void pixel_sub_wxh              common\pixel.c                                                              計算像素差 
static int pixel_satd_wxh                        common\pixel.c                                          計算4*4hardmard變換后的絕對誤差和 
static inline int pixel_sa8d_wxh               common\pixel.c                                             計算8*8hardmard變換后的絕對誤差和 
static void predict_16x16_dc                common\predict.c                             上和左鄰塊可用時,幀內16*16亮度塊DC模式預測 
static void predict_16x16_dc_left         common\predict.c                              左邊鄰塊可用時,幀內16*16亮度塊DC模式預測 
static void predict_16x16_dc_top        common\predict.c                             上邊鄰塊可用時,幀內16*16亮度塊DC模式預測 
static void predict_16x16_dc_128        common\predict.c             鄰塊均不可用時,幀內16*16亮度塊預測DC模式,預測值為128 
static void predict_16x16_h                 common\predict.c                                        幀內16*16亮度塊水平預測 
static void predict_16x16_v                 common\predict.c                                            幀內16*16亮度塊垂直預測 
static void predict_16x16_p                  common\predict.c                                         幀內16*16亮度塊平面預測 
static void predict_8x8c_dc_128         common\predict.c   
static void predict_8x8c_dc_left            common\predict.c   
static void predict_8x8c_dc_top            common\predict.c   
static void predict_8x8c_dc                  common\predict.c   
static void predict_8x8c_h                    common\predict.c   
static void predict_8x8c_v                    common\predict.c   
static void predict_8x8c_p                    common\predict.c   
static void predict_4x4c_dc_128          common\predict.c   
static void predict_4x4c_dc_left           common\predict.c   
static void predict_4x4c_dc_top           common\predict.c   
static void predict_4x4c_dc                 common\predict.c   
static void predict_4x4c_h                   common\predict.c   
static void predict_4x4c_v                   common\predict.c   
static void predict_4x4c_p                    common\predict.c   
static void predict_4x4_ddl                   common\predict.c                                             模式3 左下對角預測 
static void predict_4x4_ddr                  common\predict.c                                              模式4 右下對角預測 
static void predict_4x4_vr                   common\predict.c                                               模式5 垂直左下角 
static void predict_4x4_hd                   common\predict.c                                              模式6 水平斜下角 
static void predict_4x4_vl                     common\predict.c                                              模式7 垂直左下角 
static void predict_4x4_hu                   common\predict.c                                              模式8  水平斜上角 
static void predict_8x8c_dc_128             common\predict.c   
static void predict_8x8c_dc_left            common\predict.c   
static void predict_8x8c_dc_top          common\predict.c   
static void predict_8x8c_dc                  common\predict.c   
static void predict_8x8c_h                common\predict.c   
static void predict_8x8c_v                common\predict.c   
static void predict_8x8c_p                common\predict.c   
static void predict_8x8_ddl                 common\predict.c   
static void predict_8x8_ddr               common\predict.c   
static void predict_8x8_vr                   common\predict.c   
static void predict_8x8_hd                 common\predict.c   
static void predict_8x8_vl                  common\predict.c   
static void predict_8x8_hu              common\predict.c   
void x264_predict_16x16_init            common\predict.c                                                幀內16*16亮度塊預測模式初始化 
void x264_predict_8x8c_init( int cpu, x264_predict8x8_t pf[7] ) common\predict.c   幀內8*8亮度塊預測模式初始化(7種模式) 
void x264_predict_8x8c_init( int cpu, x264_predict8x8_t pf[12] ) common\predict.c 幀內8*8亮度塊預測模式初始化(12種模式) 
void x264_predict_4x4_init             common\predict.c                                              幀內4*4亮度塊預測模式初始化 
void x264_cqm_init                        common\set.c                                                                   量化矩陣初始化 
int x264_cqm_parse_jmlist                 common\set.c                                                         分析量化矩陣列表的正確性 
int x264_cqm_parse_file                 common\set.c                                                             分析量化矩陣文件的正確性 
      
static inline void x264_cabac_encode_ue_bypass       encoder\cabac.c                                    無符號指標GOLOMB編碼 
static inline void x264_cabac_mb_type_intra              encoder\cabac.c                                     宏塊幀內類型cabac編碼 
static void x264_cabac_mb_type                               encoder\cabac.c                                     宏塊類型cabac編碼 
static void x264_cabac_mb_intra4x4_pred_mode      encoder\cabac.c                              4*4幀內亮度塊預測模式cabac編碼 
static void x264_cabac_mb_intra_chroma_pred_mode   encoder\cabac.c                                 幀內色度塊預測模式cabac編碼 
static void x264_cabac_mb_cbp_luman                    coder\cabac.c                                             宏塊亮度cbp值cabac編碼 
static void x264_cabac_mb_cbp_chroma                 encoder\cabac.c                                             宏塊色度cbp值cabac編碼
static void x264_cabac_mb_qp_delta                       encoder\cabac.c                                           宏塊增量量化參數cabac編碼 
void x264_cabac_mb_skip                                       encoder\cabac.c                                               可跳過宏塊cabac編碼 
static inline void x264_cabac_mb_sub_p_partition   encoder\cabac.c                                           8*8子宏塊分割cabac編碼 
static inline void x264_cabac_mb_sub_b_partition   encoder\cabac.c                                    B幀8*8子宏塊各種分割cabac編碼 
static inline void x264_cabac_mb_transform_size     encoder\cabac.c                                           宏塊變換塊尺寸cabac編碼 
static inline void x264_cabac_mb_ref                       encoder\cabac.c                                          參考宏塊cabac編碼 
static inline void x264_cabac_mb_mvd_cpn              encoder\cabac.c                                       宏塊的mvd進行cabac編碼 
static inline void x264_cabac_mb_mvd                   encoder\cabac.c  計算並保存宏塊mvd,調用上個函數對mvd進行cabac編碼 
static inline void x264_cabac_mb8x8_mvd             encoder\cabac.c                                    8*8宏塊mvd的cabac編碼 
static int x264_cabac_mb_cbf_ctxidxinc                encoder\cabac.c                          返回宏塊左邊和上邊塊非0像素的個數 
static void block_residual_write_cabac                     encoder\cabac.c                                                   殘差塊cabac編碼 
void x264_macroblock_write_cabac                         encoder\cabac.c                      宏塊cabac編碼主函數(調用以上各子函數) 
定義RD時使用 encoder\cabac.c   
void x264_partition_size_cabac                                encoder\cabac.c                                       宏塊分割cabac編碼主函數 
static void x264_partition_i8x8_size_cabac                    encoder\cabac.c   
static void x264_partition_i4x4_size_cabac                 encoder\cabac.c   
      
static void block_residual_write_cavlc                           encoder\cavlc.c                                       殘差塊cavlc編碼 
static void cavlc_qp_delta                                            encoder\cavlc.c                                  量化參數增量cavlc編碼 
static void cavlc_mb_mvd                                           encoder\cavlc.c                                  運動矢量差值cavlc編碼 
static void cavlc_mb8x8_mvd                                     encoder\cavlc.c                                  8*8子宏塊運動矢量差值cavlc編碼 
static inline void x264_macroblock_luma_write_cavlc   encoder\cavlc.c                                     亮度宏塊cavlc編碼 
void x264_macroblock_write_cavlc                            encoder\cavlc.c                                    宏塊cavlc編碼主函數 
#ifdef RDO_SKIP_BS時使用下列 encoder\cavlc.c   
int x264_partition_size_cavlc enc oder\cavlc.c   
static int cavlc_intra4x4_pred_size encoder\cavlc.c   
static int x264_partition_i8x8_size_cavlc encoder\cavlc.c   
static int x264_partition_i4x4_size_cavlc encoder\cavlc.c   
      
static double pop encoder\eval.c 出棧 
static void push encoder\eval.c 入棧 
static int strmatch encoder\eval.c 串匹配 
static void evalPrimary encoder\eval.c 一些常用計算 
static void evalPow encoder\eval.c 運算式分析或計算 
static void evalFactor encoder\eval.c 求冪運算 
static void evalTerm encoder\eval.c   
static void evalExpression encoder\eval.c   
double x264_eval encoder\eval.c 輸入運算變量和運算符,功能調用運算表達式分析函數 
      
void x264_me_search_ref encoder\me.c 運動估計搜索 
void x264_me_refine_qpel   亞像素運動估計 
static void refine_subpel   亞像素運動估計搜索 
int x264_me_refine_bidir   雙向運動估計 
void x264_me_refine_qpel_rd   有率失真的亞像素運動估計

------------------------------------------------------------------------------

http://alphamailpost.blog.163.com/blog/static/2011180812012726103130388/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM