x264中重要结构体参数解释,参数设置,函数说明
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                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://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 有率失真的亞像素運動估計
總結
以上是生活随笔為你收集整理的x264中重要结构体参数解释,参数设置,函数说明的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 怪盗基德 第五章
- 下一篇: Pandas实战-DataFrame对象
